题目描述
现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000。
输入输出格式
输入格式:
第一行为n和k; 第二行开始为n个正整数的值,整数间用空格隔开。
输出格式:
第k个最小整数的值;若无解,则输出“NO RESULT”。
输入输出样例
说明
n≤10000
被unique害惨了
这个玩意儿返回的是去重后数组的元素个数
所以要得到最后一个元素的地址的话还要-1
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<deque> 7 #define LL long long 8 #define lb(x) ((x)&(-x)) 9 using namespace std; 10 const int MAXN=1000001; 11 inline int read() 12 { 13 char c=getchar();int x=0,f=1; 14 while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();} 15 while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();return x*f; 16 } 17 int n; 18 int a[MAXN]; 19 int main() 20 { 21 int n=read(),k=read(); 22 for(int i=1;i<=n;i++) a[i]=read(); 23 sort(a+1,a+n+1); 24 int pos=unique(a+1,a+n+1)-a-1; 25 if(k<=pos) printf("%d",a[k]); 26 else printf("NO RESULT"); 27 return 0; 28 }