WOJ1152
Ader给Felicia寄来了很多很多的好吃的糖果,Felicia给每一个糖果标记了一个可口度,每天从中选出第K好吃的糖果来吃,但是,Ader寄来的糖果实在是太多太多了,编号后也只能一股脑的放在一个盒子里,Felicia每天都要花巨量的时间来找糖果,这显然是一件折磨人的事,他想写个程序来解决这个问题,但是,万恶的期末考就要来临,Felicia不得不复习E文,只好拜托你来解决这个问题啦!
输入格式
题目含有多组数据,以EOF结束! 每组数据的第一行都有2个数,N和k,N(N<=5000000)表示Ader给Felicia的糖果的总数,k(k<=n)为Felicia想找到的第K好吃的糖果,接下来的1行里有N个正整数,Felicia把糖果从盒子里倒出来,排成一列,这些就是糖果的编号!
输出格式
每一组数据输出仅为一行,且只有一个数,为Felicia想找到的第K好吃的糖果的编号。
样例输入
10 5 5 8 1 4 4 8 3 2 7 10
样例输出
4
排序后输出第k大的就行
#include<stdio.h>
#include<string.h>
int n,k;
int a[5000010],c[5000010];
int main(){int i,num;while(~scanf("%d %d",&n,&k)){memset(c,0,sizeof(c));for(i=1;i<=n;i++){scanf("%d",&a[i]);c[a[i]]++;}num=0;for(i=0;i<=5000009;i++){num+=c[i];if(num>=k){printf("%d\n",i);break;}}}return 0;
}
更多推荐
WOJ1152
发布评论