#WHJ2025C. 赢得选举(election)

    ID: 4610 传统题 文件IO:election 1000ms 256MiB 尝试: 307 已通过: 9 难度: 10 上传者: 标签>时间2025来源威海市编程挑战赛难度普及+/提高

赢得选举(election)

题目描述

一场选举中有 NN 名候选人,编号为 1,2,,N1, 2, \ldots, N。共有 KK 张选票,其中一部分已经统计完毕。

到目前为止,候选人 ii 已获得 AiA_i 张选票。

在所有选票统计完毕后,候选人 ii1iN1 \leq i \leq N)当选的条件是:获得比他们票数多的候选人数量少于 MM。可能会有多个候选人当选。

对于每个候选人,找出他们从剩余选票中需要的最少额外票数,以确保他们无论如何都能当选。

形式化地,对于每个 i=1,2,,Ni = 1,2,\ldots,N,解决以下问题:

确定是否存在一个不超过 Ki=1NAiK - \displaystyle{\sum_{i=1}^{N}} A_i 的非负整数 XX,满足以下条件。如果存在,找出满足条件的最小整数。

  • 如果候选人 ii 获得 XX 张额外选票,那么候选人 ii 将始终当选。

输入格式

第一行三个空格隔开的整数 NN MM KK

第二行 NN 个空格隔开的整数表示到目前为止候选人们已获得的选票。

输出格式

CiC_i 是候选人 ii 从剩余选票中需要的最少额外票数,以确保他们无论如何都能当选。按顺序输出 C1,C2,,CNC_1, C_2, \ldots, C_N,用空格隔开。

如果候选人 ii 已经确保当选,则设 Ci=0C_i = 0。如果候选人 ii 在任何情况下都无法确保当选,则设 Ci=1C_i = -1

样例输入 1

5 2 16
3 1 4 1 5

样例输出 1

2 -1 1 -1 0

已统计了 1414 张选票,还剩下 22 张。
要输出的 CC(2,1,1,1,0)(2, -1, 1, -1, 0)。例如:

  • 候选人 11 获得 22 张额外选票即可确保当选,而获得 11 张则不能。因此,C1=2C_1 = 2
  • 候选人 22 即使获得 22 张额外选票也无法确保当选,所以 C2=1C_2 = -1

样例输入 2

12 1 570
81 62 17 5 5 86 15 7 79 26 6 28

样例输出 2

79 89 111 117 117 74 112 116 80 107 117 106

数据规模

  • 1MN2×1051 \leq M \leq N \leq 2 \times 10^5
  • 1K10121 \leq K \leq 10^{12}
  • 0Ai10120 \leq A_i \leq 10^{12}
  • i=1NAiK\displaystyle{\sum_{i=1}^{N} A_i} \leq K
}