#CF2141D. 避开最小值

避开最小值

D. 避开最小值

时间限制: 每测试 22
内存限制: 每测试 256256 兆字节

给你一个整数数组 a1,a2,a3,,ana_1, a_2, a_3, \dots, a_n。你的任务是使 aa 的所有元素相等。为此,你最多可以执行 kk 次以下操作:

  • 选择任意索引 ii(从 11nn),并将 aia_i 增加 11

你可以选择数组中的任意元素,但如果选择的 aia_i 严格大于数组当前的最小值,你将获得一枚硬币。

在所有能使数组元素全部相等的操作方法中,你最多能获得多少枚硬币?


输入格式

第一行包含一个整数 tt (1t1000)(1 \leq t \leq 1000) — 测试用例的数量。接下来是 tt 个独立的测试用例。

每个测试用例的第一行包含两个整数 nnkk $(2 \leq n \leq 3 \cdot 10^5;\ 1 \leq k \leq 10^{12})$ — 数组 aa 的大小和你可以执行的最大操作次数。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n (1ai109)(1 \leq a_i \leq 10^9) — 数组本身。

保证所有测试用例的 nn 之和不超过 31053 \cdot 10^5


输出格式

对于每个测试用例,如果无法使所有元素相等,输出 1-1。否则,输出在使所有元素相等的过程中能获得的最大硬币数量。


样例

输入

4
3 16
1 10 2
4 20
6 2 4 9
5 9
7 7 7 7 7
2 1000000000000
1000000000 1000000000

输出

-1
11
0
499999999999

样例解释

第一个测试用例:你需要至少 1717 次操作才能使所有元素相等(得到数组 [10,10,10][10, 10, 10])。由于 k=16<17k = 16 < 17,无法完成,输出 1-1

第二个测试用例:可以按如下方式操作,例如:

  • a3=4a_3 = 4 增加到 1010
  • 然后将 a1=6a_1 = 6 增加到 1010
  • 然后将 a4=9a_4 = 9 增加到 1010
  • 最后将 a2=2a_2 = 2 增加到 1010

共执行 1919 次操作(k=20\leq k = 20),获得的硬币总数为:

(104)+(106)+(109)=6+4+1=11(10 - 4) + (10 - 6) + (10 - 9) = 6 + 4 + 1 = 11

因为将 a2a_222 增加到 1010 时,22 始终是数组的最小值,不会获得硬币。

第三个测试用例:数组已经全部相等,你可以不做任何操作,或者将所有元素增加到 88——两种策略都获得 00 枚硬币。

第四个测试用例:数组初始为 [109,109][10^9, 10^9],已经相等。你可以将两者都增加至某个值,通过精心安排操作顺序,最多可获得 499999999999499999999999 枚硬币。