Skip to content

27932: Less or Equal

http://cs101.openjudge.cn/practice/27932/

给定一个长度为n和整数k的整数序列。请你打印出[1,10^9]范围内的最小整数x(即1≤x≤10^9),使得给定序列中恰好有k个元素小于或等于x

注意,序列可以包含相等的元素。 如果没有这样的x,打印"-1"(不带引号)。

输入

输入的第一行包含整数 n 和 k ( 1≤n≤2·10^5, 0≤k≤n)。 输入的第二行包含n个整数 a_1,a_2,…,a_n (1≤a_i≤10^9) ——序列本身。

输出

输出最小整数 x (1≤x≤10^9),使得给定序列中恰好有k个元素小于或等于x。 如果没有这样的x,打印"-1"(不带引号)。

样例输入

sample1 input:
7 4
3 7 5 1 10 3 20

sample1 output:
5

样例输出

sample2 input:
7 2
3 7 5 1 10 3 20

sample2 output:
-1

提示

tags: sortings, *1200

来源

tcy, https://codeforces.com/contest/977/problem/C,略作改动

python
n, k = map(int, input().split())

a = list(map(int, input().split()))
a.sort()

# 寻找 x
if k == 0:
    x = 1 if a[0] > 1 else -1
elif k == n:
    x = a[-1]
else:
    # 检查第 k 个元素是否是唯一满足条件的
    x = a[k-1] if a[k-1] < a[k] else -1

print(x)