第X大的数
Time Limit: 1000MS Memory Limit: 65536KBProblem Description
X最近爱上了区间查询问题,给出N (N <= 100000) 个数,然后进行M (M <= 5) 次询问,每次询问时,输入一个数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 4Example Output
3 2 2 1
代码如下:
#include<stdio.h> int main() { int number[100001]; int n,m,i,j,k,t; while(scanf("%d",&n)!=EOF) { for(i=0;i<=100001;i++) number[i]=0; for(i=1;i<=n;i++) { scanf("%d",&j); number[j]++; } scanf("%d",&m); for(i=1;i<=m;i++) { scanf("%d",&k); for(j=100000,t=0;j>=1;j--) { if(number[j]!=0) t+=number[j]; if(t>=k) { printf("%d\n",j); break; } } } } return 0; }