CF1978D.Elections
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
伯兰德正在举行选举。有 n 位候选人参加选举,编号从 1 到 n。第 i 位候选人有 ai 名支持者会投票给他。此外,还有 c 名尚未决定支持哪位候选人的“未决定者”。未决定者会投票给编号最小的候选人。
获得最多票数的候选人将赢得选举,如果有多位候选人获得相同的最高票数,则编号最小的候选人获胜。
你觉得这场选举太无聊且可预测,于是你决定排除掉一些候选人。如果你不允许编号为 i 的候选人参加选举,那么他的所有 ai 名支持者都会变成未决定者,并会投票给编号最小的候选人。
你很好奇,对于每个 i 从 1 到 n,最少需要排除多少名候选人,才能让编号为 i 的候选人赢得选举。
输入格式
每个测试包含多组测试用例。第一行包含一个整数 t(1≤t≤2⋅104),表示测试用例的数量。接下来是每组测试用例的描述。
每组测试用例的第一行包含两个整数 n 和 c(1≤n≤2⋅105,0≤c≤109),分别表示候选人数和未决定者人数。
每组测试用例的第二行包含 n 个整数 a1,a2,…,an(0≤ai≤109),表示每位候选人的支持者人数。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每组测试用例,输出 n 个整数,第 i 个数表示让编号为 i 的候选人赢得选举所需排除的最少候选人数。
输入输出样例
输入#1
5 3 1 2 0 3 2 3 0 10 5 3 5 4 3 2 1 4 5 3 10 7 1 6 0 2 2 2 3 3 3
输出#1
0 1 2 1 0 0 1 2 3 4 1 0 2 3 1 1 2 0 4 5
说明/提示
在第一个测试用例中:
- 如果所有候选人都允许参选,编号为 1 的候选人将获得 3 票(1 名未决定者会投票给他),编号为 2 的候选人获得 0 票,编号为 3 的候选人获得 3 票。因此,编号为 1 的候选人获胜(他与编号为 3 的候选人票数相同,但编号更小),所以他的答案是 0。
- 如果不允许编号为 1 的候选人参选,他的 2 名支持者会变成未决定者。此时编号为 2 的候选人获得 3 票(3 名未决定者会投票给他),编号为 3 的候选人获得 3 票。因此,编号为 2 的候选人获胜(他与编号为 3 的候选人票数相同,但编号更小),所以他的答案是 1。
- 如果不允许编号为 1 和 2 的候选人参选,编号为 3 的候选人获胜,所以他的答案是 2。
在第二个测试用例中,只要不允许编号为 2 的候选人参选,编号为 1 的候选人就能获胜。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?