CF263B Squares 题解

Content

有 \(n\) 个边长为 \(a_i\) 的正方形,第 \(i\) 个正方形的四个顶点分别是 \((0,0),(0,a_i),(a_i,0),(a_i,a_i)\),我们定义一个点属于一个正方形当且仅当这个点完全在正方形内或者在正方形的边界上。试找到一个属于 \(k\) 个正方形的点,或者这样的点不存在。

数据范围:\(1\leqslant n,k\leqslant 50,1\leqslant a_i\leqslant 10^9\)。

Solution

我们先按边长由小到大给这些正方形排序,然后由于在正方形边界上也算属于这个正方形,那么答案就可以是第 \(n-k+1\) 大的正方形的右下顶点,直接输出就好。

Code

int n, k, a[57];

int main() {
	getint(n), getint(k);
	_for(i, 1, n)	getint(a[i]);
	if(k > n)	return printf("-1"), 0;
	sort(a + 1, a + n + 1);
	printf("%d 0", a[n - k + 1]);
	return 0;
}
上一篇:React 从零开始学习(八)—— 决出胜负


下一篇:第3章、操作列表