CF2141D.Avoid Minimums
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个整数数组 a1,a2,a3,…,an。你的任务是使数组中所有元素都相等。为此,你可以进行至多 k 次如下操作:
- 选择任意一个下标 i(1≤i≤n),将 ai 增加 1。
你可以选择数组中的任意元素,但如果选择的 ai 严格大于当前数组的最小值,你将获得一枚金币。请你计算,在所有可能的使数组元素相等的操作方案中,你最多能获得多少金币。
输入格式
第一行输入一个整数 t(1≤t≤1000),表示测试用例的数量。接下来 t 个测试用例,每个测试用例互相独立。
每个测试用例的第一行输入两个整数 n 和 k(2≤n≤3×105,1≤k≤1012),分别表示数组的大小和最多可以进行的操作次数。
每个测试用例的第二行输入 n 个整数 a1,a2,…,an(1≤ai≤109),表示数组本身。
保证所有测试用例中 n 的总和不超过 3×105。
输出格式
对于每个测试用例,如果无法将数组中所有元素变为相等,则输出 −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
-1 11 0 499999999999
说明/提示
在第一个测试用例中,至少需要 17 次操作才能将所有元素变为相等(或者得到数组 [10,10,10])。
在第二个测试用例中,你可以例如先将 a3=4 增加到 10,然后将 a1=6 增加到 10,接着将 a4=9 增加到 10,最后把 a2=2 增加到 10。你一共进行了 19 次操作,获得了 (10−4)+(10−6)+(10−9)=11 枚金币,因为将 a2 从 2 加到 10 的操作不会获得任何金币。
在第三个测试用例中,你可以选择让数组不变,也可以把所有元素变成 8,无论哪种方法都不会获得金币。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?