刚开始错误思路,排序后判断a[k-1]是否等于a[k]等于输出-1,不等输出a[k],第三个样例就没过
看题解,考虑k=0的情况,脑子抽的特判输出-1,后来看n范围是1~1e9就特判输出0
后来才看到x范围也要是1~1e9,在k=0时分两种情况排序后a[0]等于1输出-1,否则输出1。终于过了
CF上的,题解排序后,给ans赋值,循环统计了一遍小于ans的个数,再判断,私以为费时间,不知道为啥题解这样写
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k;
scanf("%d %d",&n,&k);
int a[n+1];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
if(k==0){
if(a[0]==1){
printf("-1");
}else{
printf("1");
}
return 0;
}
k=k-1;
if(a[k]==a[k+1]){
printf("-1");
}else {
printf("%d",a[k]);
}
return 0;
}