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 分)无额外约束条件