CF169A Chores 题解

Content

两兄弟要分担 \(n\) 件家务,第 \(i\) 件家务有一个复杂度 \(h_i\)。兄弟俩以一个数 \(x\) 为界。所有满足复杂度 \(>x\) 的家务都给哥哥做,其余的给弟弟做。他们想找到一个数 \(x\),使得哥哥刚好做 \(a\) 件家务,弟弟刚好做 \(b\) 件家务。试求出所有可能的 \(x\) 的个数。

数据范围:\(2\leqslant n\leqslant 2000,a,b\geqslant 1,a+b=n,1\leqslant h_i\leqslant 10^9\)

Solution

我们先将所有的家务按照复杂度从小到大排序,然后只需要看复杂度第 \(k\) 小的家务的复杂度是否和复杂度第 \(k+1\) 小的家务的复杂度之间的数值关系就好,如果没有方案答案就是 \(0\),否则答案就是复杂度第 \(k\) 小的家务的复杂度是否和复杂度第 \(k+1\) 小的家务的复杂度之间的差值。

Code

int a, b, n, h[2007], ans;

int main() {
	getint(n), getint(a), getint(b);
	_for(i, 1, n)	getint(h[i]);
	sort(h + 1, h + n + 1);
	writeint(ans = h[b + 1] - h[b]);
	return 0;
}
posted @ 2021-12-17 14:20  Eason_AC  阅读(40)  评论(0)    收藏  举报