点击获取原题链接
第X大的数 Time Limit: 1000MS Memory Limit: 65536KB Problem Description X最近爱上了区间查询问题,给出N(N <= 200)个数,然后进行M次询问,每次询问时,输入一个数X(1<= X <= N),输出N个数中第X大的数。 Input 多组输入。 每组首先输入一个整数N,代表有N个数,下面一行包含N个整数,用空格隔开。然后为一个整数M,代表有M次询问,下面的M行,每行一个整数X。 Output 输出N个数中第X大的数。 Example Input 4 1 2 2 3 4 1 2 3 4 Example Output 3 2 2 1 Hint Author zmx /***直接排序即可**********/ #include <bits/stdc++.h> using namespace std; int a[200+10]; void sort(int left,int right) { if(left>=right)return;///递归边界 int i=left; int j=right; int x=a[left];///快排枢纽 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; sort(left,i-1);///递归左边 sort(i+1,right); } int main() { int n; while(cin>>n) { for(int i=0;i<n;i++) { cin>>a[i]; } int m; cin>>m; sort(0,n-1);///手写快排 从大到小 while(m--) { int key; cin>>key; cout<<a[key-1]<<endl; } } }