P12701 [KOI 2022 Round 2] 升级
题目背景
试题来源:。中文翻译做了少量本土化修改。
按照[署名—非商业性使用—相同方式共享 4.0 协议国际版](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans)进行授权。
题目描述
你正在培养 $N$ 名游戏角色。第 $i$ 名角色的当前等级为 $L_i$($1 \leq i \leq N$)。
为了提升角色的等级,你将总共进行 $M$ 次训练。每次训练按如下方式进行:
- 按照等级从低到高的顺序,选择 $K$ 名角色。如果有多个角色的等级相同,可以从中任选。
- 将所选角色的等级各提升 1 级。
例如,设 $M = 4$,$K = 3$,并且 $N = 5$ 个角色的初始等级依次为 5、1、7、5、4。
第一次训练后,第 2、5、4 个角色的等级将提升,角色等级变为 5、2、7、6、5。
上面的例子中,每次训练之后角色的等级如下所示:
| 训练次数 | 角色等级 |
|:----------:|:-----------------------:|
| 1 | $5, 2, 7, 6, 5$ |
| 2 | $6, 3, 7, 6, 6$ |
| 3 | $7, 4, 7, 6, 7$ |
| 4 | $7, 5, 8, 7, 7$ |
请你编写程序,在 $M$ 次训练全部结束后,按升序输出 $N$ 名角色的最终等级。
输入格式
第一行包含一个整数 $N$,表示角色数量。
第二行包含 $N$ 个整数 $L_1, L_2, \ldots, L_N$,表示每个角色的初始等级,以空格分隔。
第三行包含两个整数 $M$ 和 $K$,以空格分隔,表示总共进行 $M$ 次训练,每次训练提升等级的角色数为 $K$。
输出格式
一行输出 $N$ 个整数,表示 $M$ 次训练后各角色的等级,按升序排列。
说明/提示
**约束条件**
- $1 \leq N \leq 100\,000$
- $1 \leq M \leq 10^9$
- $1 \leq K \leq N$
- $1 \leq L_i \leq 10^9$($1 \leq i \leq N$)
**子任务**
1. (4 分)$N \leq 1\,000$,$M \leq 1\,000$
2. (10 分)$K = 1$
3. (32 分)$M \leq 100\,000$
4. (54 分)无额外约束条件