注意边角
You are given a sequence of integers of length nn and integer number kk. You should print any integer number xx in the range of [1;10e9] (i.e. 1≤x≤10e9) such that exactly kk elements of given sequence are less than or equal to xx.
Note that the sequence can contain equal elements.
If there is no such xx, print “-1” (without quotes).
Input
The first line of the input contains integer numbers n and k (1≤n≤2⋅10e5, 0≤k≤n). The second line of the input contains nn integer numbers a1,a2,…,ana1,a2,…,an (1≤ai≤10e9) — the sequence itself.
output
Print any integer number xx from range [1;10e9]such that exactly k elements of given sequence is less or equal to x.
If there is no such xx, print “-1” (without quotes).
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e5+5;
int m[N];
int main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>m[i];
sort(m+1,m+1+n);
if(n==k)cout<<m[n];
else if(k==0){
if(m[1]==1)puts("-1");
else puts("1");
}
else if(m[k]==m[k+1])puts("-1");
else cout<<m[k]<<endl;
}
因为codeforces炸了,所以以上代码现场手打,有错请谅解