先把所有礼物价值记为数组 a,排序后得到升序数组 b。
天才同学先拿走恰好 k 份礼物,笨蛋同学面对的是剩下的 n−k 份礼物,并且她会从中选价值最大的至多 m 份。
所以问题变成:
笨蛋同学和天才同学正在围绕着 n 份礼物进行博弈,第i份礼物的价值为ai。
我们希望找到最小整数 m,使得对于天才同学任意拿走的 k份礼物,笨蛋同学在看到剩余礼物的价值后,均能从剩余的 n−k 份礼物中选取不超过 m 份,使其总价值至少为y。
每个测试文件均包含多组测试数据:
第一行输入一个整数 t(1≤t≤2×105) 代表数据组数,每组测试数据描述如下:
每组测试数据中,第一行输入三个整数 、 和y(1≤k≤n≤2×105;1≤y≤1012)。
每组测试数据中,第二行输入n 个整数a1,a2,…,an(1≤ai≤5×106),表示每份礼物的价值。
除此之外,保证单个测试文件的 n 之和不超过 4×105。
对于每一组测试数据,输出使得上述保证成立的最小整数 m;
如果无论取多少份(至多取剩余全部 n−k份)都无法保证最终总价值至少为 y,则输出 −1。
输入
3
5 2 10
1 2 3 4 5
4 1 7
5 2 4 3
输出
-1
2
2