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 |
我觉得是你的程序有问题,我这样做是超时,汇编写的partition和nth_element也超In Reply To:Re:我怀疑这道题目的数据有问题啊。我用了一个标准的二分查找,可也错了。 Posted by:ZSUKINGDOM at 2005-05-18 15:43:23 > 我的程序如下: > #include <stdio.h> > const long N=110000; > long a[N],b[N]; > long partition(long p,long r) > { > long temp,t; > temp=b[(p+r)/2]; > while (p<r) > { > while (b[r]>temp) r--; > while (b[p]<temp) p++; > if (p<r) > { > if (b[p]!=b[r]) {t=b[r];b[r]=b[p];b[p]=t;} > r--;p++; > } > } > return r; > } > long find(long p,long r,long k) > { > long i,q; > if (p==r) return b[p]; > q=partition(p,r); > i=q-p+1; > if (i>=k) return find(p,q,k); > else return find(q+1,r,k-i); > } > int main() > { > long m,n,i,j,k,t,ii; > scanf("%ld%ld",&n,&m); > for (i=0;i<n;i++) > scanf("%ld",&a[i]); > while (m--) > { > scanf("%ld%ld%ld",&i,&j,&k); > for (ii=0;i<=j;i++,ii++) b[ii]=a[i-1]; > t=find(0,ii-1,k); > printf("%ld\n",t); > } > return 1; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator