CF723C Polycarp at the Radio
题目描述
Polycarp 是一家电台的音乐编辑。他收到了明天的播放列表,可以表示为一个序列 $a_{1},a_{2},...,a_{n}$,其中 $a_{i}$ 表示第 $i$ 首歌的表演乐队。Polycarp 喜欢编号从 $1$ 到 $m$ 的乐队,对其他乐队兴趣不大。
我们将 $b_{j}$ 定义为第 $j$ 支乐队明天表演的歌曲数量。Polycarp 想要调整播放列表,使得 $b_{1},b_{2},...,b_{m}$ 中的最小值尽可能大。
请计算,在可以达到的最大最小值下,Polycarp 至少需要进行多少次更换操作(一次更换即将第 $i$ 首歌的表演乐队换成任意其他乐队)。同时,请输出变更后的播放列表。
输入格式
第一行包含两个整数 $n$ 和 $m$($1 \leq m \leq n \leq 2000$)。
第二行包含 $n$ 个整数 $a_{1},a_{2},...,a_{n}$($1 \leq a_{i} \leq 10^{9}$),其中 $a_{i}$ 表示第 $i$ 首歌的表演乐队。
输出格式
第一行输出两个整数:变更后所有 $b_{j}$ ($1 \leq j \leq m$)中的最大最小值,以及达到该目标所需的最小更换次数。
第二行输出调整后的播放列表。
如果有多种方案,输出任意一种均可。
说明/提示
在第一个样例中,调整后第 $1$ 支乐队演唱了两首歌($b_{1}=2$),第 $2$ 支乐队也演唱了两首歌($b_{2}=2$)。因此,这两个值中的最小值为 $2$。通过任何方式都无法获得更大的最小值。
在第二个样例中,调整后第 $1$ 支乐队演唱了两首歌($b_{1}=2$),第 $2$ 支乐队演唱了三首歌($b_{2}=3$),第 $3$ 支乐队也演唱了两首歌($b_{3}=2$)。因此,最大最小值为 $2$。
由 ChatGPT 5 翻译