codeforce-------Less or Equal

You are given a sequence of integers of length n and integer number k. You should print any integer number x in the range of [1;109] (i.e. 1≤x≤109) such that exactly k elements of given sequence are less than or equal to x.Note that the sequence can contain equal elements.If there is no such x, print “-1” (without quotes).InputThe first line of the input contains integer numbers n and k (1≤n≤2⋅105, 0≤k≤n). The second line of the input contains n integer numbers a1,a2,…,an (1≤ai≤109) — the sequence itself.OutputPrint any integer number x from range [1;109] such that exactly k elements of given sequence is less or equal to x.If there is no such x, print “-1” (without quotes).ExamplesInputCopy7 4
3 7 5 1 10 3 20
OutputCopy6InputCopy7 2
3 7 5 1 10 3 20
OutputCopy-1
NoteIn the first example 5 is also a valid answer because the elements with indices [1,3,4,6] is less than or equal to 5 and obviously less than or equal to 6.In the second example you cannot choose any number that only 2 elements of the given sequence will be less than or equal to this number because 3

题目大意:
一个含有n个元素的序列,求一个x(1<=x<=1e9)使得恰好有k个元素小于等于x

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 2e5 + 10;
typedef long long LL;
int n, k;
LL a[N];
int main(){
 cin >> n >> k;
 for (int i = 0; i < n; i ++)
 scanf("%d", &a[i]);
  sort(a, a + n);
 if (!k){
  if (a[0] - 1 >= 1)    cout << a[0] - 1 << endl;
  else                  cout << -1 << endl;
 }
 else{
  if (a[k] != a[k - 1])    cout << a[k - 1] << endl;
  else                     cout << -1 << endl;
 }
  return 0;
}
发布了106 篇原创文章 · 获赞 67 · 访问量 5410

猜你喜欢

转载自blog.csdn.net/qq_45772483/article/details/105050833