题号: 10066
时限:1000ms
限制内存:32768KB
题目: 第k小的数
描述
给定一个数组a和一个整数k, 找出数组中第k小的数. (注意, 本题中相等的数看作不同, 比如数列{1, 2, 2, 3}中第3小的数是2而不是3)
输入格式
第一行, 两个整数, n(1<=n<=5000000)表示数组的元素个数, k(1<=k<=n).
第二行, 数组中的n个整数(1<=a[i]<=10000).
输出格式
输出第k小的数.
输入样例
4 3
1 2 2 3
输出样例
2
#include<stdio.h>
int m[10000]={0};
int main()
{
int i,n,a,j,k;
scanf("%d%d",&n,&k);
for(i=0;i<n;++i)
{
scanf("%d",&a);
m[a]++;
}
int count=0;
for(i=1;i<=10000;++i)
{
if(m[i]!=0)
{
for(j=0;j<m[i];++j)
{
count++;
if(count==k)
{
printf("%d\n",i);
break;
}
}
}
}
return 0;
}