题解 P1138 【第k小整数】
引领天下
2017-05-02 20:03:22
做法:
首先,读入 $n$ 和 $k$;
然后,读入 $n$ 个整数;
读入时去重。
去完了就排序。
然后输出。
代码:
```cpp
#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
}
```