这道题的目的很明显, 就是桶, 当然100,000的数据O(nlogn)的排序也是能做的. #include<iostream> using namespace std; int n,q; int A[5001]; char s[10]; int query(int p) { int i,temp=0; for(i=1;i<5001;i++) { if(temp+A[i]<p) temp+=A[i]; else return i; } } int main() { int i,j; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&j); A[j]++; } scanf("%s",s); scanf("%d",&q); for(i=0;i<q;i++) { scanf("%d",&j); printf("%d/n",query(j)); } return 0; }