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)