题解 P1138 【第k小整数】

其实,这题可以很简单。

首先,读入n和k;

然后,读入n个整数;

读入时去重。

去完了就排序。

然后输出。

OK!!!!!!


上代码:(c++)


1
2
3
4
5
6
7
8
9
10
#include <bits/stdc++.h>//包含所有头文件的头文件
using namespace std;
int n,a[10005],i,k;//不解释
bool s[30005];//用来去重的桶
int main(void){
scanf ("%d%d",&n,&k);
for (;i<n;i++){
scanf ("%d",&a[i]);//读入
if (s[a[i]])n--,i--;//如果出现过了,总数--,i--(重读a[i])
else s[a[i]]=1;//不然标记一下

}//读完了就去重完了
//这就是我的和别的调解不同的地方:我用桶去重。

sort (a,a+n);//排序!

if (n<k||k<=0)printf ("NO RESULT");//坑人的#3、5、8

else printf ("%d",a[k-1]);//因为我是0下标,所以k要-1

}
```