Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
哪位人兄帮忙看看是哪出错了呢....#include <iostream> #include <math.h> #define N 20000 using namespace std; void sort(int a[],int m,int n) { int i,k,j,t; for(i=m;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(a[j]<a[k]) k=j; t=a[k];a[k]=a[i];a[i]=t; } } int partition (int a[],int p,int r,int x) { int i=p, j=r-1; while(i<j) { while(i<j&&a[j]>=x) --j; a[i]=a[j]; while(i<j&&a[i]<=x) ++i; a[j]=a[i]; } a[i]=x; return i; } int select (int a[N],int p,int r,int k) { int i,t,j; int x; if(r-p<75) { sort(a,p,r); if(p+k<=0) return a[p+k]; else return a[p+k]; } for(i=0;i<=(r-p-4)/5;i++) { sort(a,p+5*i,p+5*i+4); t=a[p+i]; a[p+i]=a[p+5*i+2]; a[p+5*i+2]=t; } x=select(a,p,p+(r-p-4)/5,(r-p-4)/10); i=partition(a,p,r,x); j=i-p; if(k<=j) return select(a,p,i,k); else return select(a,i+1,r,k-j); } void input(int x[],int y[],int &n) { int i; for(i=0;i<n;i++) { cin>>x[i]; cin>>y[i]; } } int main() { int n,steps,i,mid_y,mid_x,x[N],y[N],cx[N]; cin>>n; steps=0; input(x,y,n); mid_y=select(y,0,n,n/2); for(i=0;i<n;i++) steps=steps+abs(y[i]-mid_y); sort(x,0,n); for(i=0;i<n;i++) cx[i]=x[i]-i; mid_x=cx[n/2]; for(i=0;i<n;i++) steps=steps+abs(x[i]-mid_x-i); cout<<steps<<endl; return(0); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator