题解 P1138 【第k小整数】

引领天下

2017-05-02 20:03:22

Solution

做法: 首先,读入 $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 } ```