其他分享
首页 > 其他分享> > CF977C Less or Equal 题解

CF977C Less or Equal 题解

作者:互联网

Content

给定一个 \(n\) 个数的数列 \(a_1,a_2,a_3,...,a_n\) 和一个数 \(k\),试找出这样的一个数 \(x\),使得数列中有 \(k\) 个数小于等于 \(x\)。求出任意一个 \(x\),或者 \(x\) 不存在。

数据范围:\(1\leqslant n\leqslant 2\times 10^5,0\leqslant k\leqslant n,1\leqslant a_i\leqslant 10^9,x\in[1,10^9]\)。

Solution

比大小的话肯定要排序,所以我们先对这个序列排序。设排序后的每个数下标是按照其排序之后的位置决定的。然后,按照 \(k\) 的值分类讨论:

Code

int n, k, a[200007], ans;

int main() {
	getint(n), getint(k);
	_for(i, 1, n)	getint(a[i]);
	sort(a + 1, a + n + 1);
	ans = (!k ? (a[1] > 1 ? a[1] - 1 : -1) : (a[k] == a[k + 1] ? -1 : a[k]));
	writeint(ans);
	return 0;
}

标签:10,Less,int,题解,Equal,getint,ans,排序,leqslant
来源: https://www.cnblogs.com/Eason-AC/p/15716766.html