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 |
Re:为神马G++就RE, C++却ACIn Reply To:为神马G++就RE, C++却AC Posted by:ivapple at 2010-12-05 17:42:32 > //G++ RE C++ AC > #include <cstdlib> > #include <iostream> > #include <cstdio> > #include <ctime> > #include <cmath> > > using namespace std; > > const int MAX = 10000+100; > > int Rand(int p, int r) > { > srand((unsigned)time(NULL)); > return p + rand()%(r-p+1); > } > > void Exchange(int &a, int &b) > { > int tmp = a; > a = b; > b = tmp; > } > > int Partition(int a[], int p, int r) > { > int i, j; > int x = a[r]; > i = p-1; > for (j=p; j<r; j++) > { > if (a[j] <= x) > { > i++; > if (i != j) > Exchange(a[i], a[j]); > } > } > Exchange(a[i+1], a[r]); > return i+1; > } > > int RandPartition(int a[], int p, int r) > { > int i = Rand(p, r); > Exchange(a[r], a[i]); > return Partition(a, p, r); > } > > int RandSelect(int a[], int p, int r, int i) > { > if (p == r) > return a[p]; > int q = RandPartition(a, p, r); > int k = q-p+1; > if (i == k) > return a[q]; > else > if (i < k) > return RandSelect(a, p, q-1, i); > else > return RandSelect(a, q+1, r, i-k); > } > > void QuickSort(int a[], int p, int r) > { > if (p < r) > { > int q = RandPartition(a, p, r); > QuickSort(a, p, q-1); > QuickSort(a, q+1, r); > } > } > > int x[MAX], y[MAX], N; > > int main(int argc, char *argv[]) > { > scanf("%d", &N); > int i, sum=0; > for (i=0; i<N; i++) > scanf("%d%d", &x[i], &y[i]); > QuickSort(x, 0, N-1); > for (i=0; i<N; i++) > x[i] = x[i] - i; > > int kx = RandSelect(x, 0, N-1, (N+1)/2); > int ky = RandSelect(y, 0, N-1, (N+1)/2); > > for (i=0; i<N; i++) > sum = sum + abs(y[i]-ky) + abs(x[i]-kx); > printf("%d\n", sum); > return EXIT_SUCCESS; > } 同问,我也遇到这个问题在2388题 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator