2748=第X大的数
1 #include <stdio.h> 2 #include <stdlib.h> 3 int a[100000];//其实也就是快速排序,就是从大到小然后多个查询的过程。 4 void sort(int left,int right) 5 { 6 if(left>=right)return 0; 7 int temp,l,r; 8 l=left,r=right; 9 temp=a[left]; 10 while(l<r) 11 { 12 while(l<r&&a[r]<=temp) 13 r--; 14 a[l]=a[r]; 15 while(l<r&&temp<=a[l]) 16 l++; 17 a[r]=a[l]; 18 } 19 a[l]=temp; 20 sort(left,l-1); 21 sort(l+1,right); 22 } 23 int main() 24 { 25 int i,n,m,p; 26 while(~scanf("%d",&n)) 27 { 28 for(i=0; i<n; i++) 29 { 30 scanf("%d",&a[i]); 31 } 32 sort(0,n-1); 33 scanf("%d",&m); 34 for(i=0; i<m; i++) 35 { 36 scanf("%d",&p); 37 printf("%d\n",a[p-1]); 38 } 39 } 40 return 0; 41 }