CF980C Posterized
题目描述
Ibrahim 教授为他的算法课准备了期末作业。他要求学生实现“色调分层”图像滤镜。
他们的算法将在一个整数数组上进行测试,其中第 $i$ 个整数表示图像中第 $i$ 个像素的颜色。该图像为黑白色,因此每个像素的颜色是 $0$ 到 $255$(包含)之间的整数。
为了实现该滤镜,学生需要将黑白色范围 $[0, 255]$ 划分为若干组连续的颜色,并为每组选择一个颜色作为该组的“关键色”。为了保留图像细节,每组的大小不能超过 $k$,且每种颜色只能属于一个组。
最后,学生需要将数组中每个像素的颜色替换为其所属组的关键色。
为了更好地理解效果,下面是一只晒太阳的乌龟图片,右侧 $k$ 逐渐增大时应用了色调分层滤镜的效果。

为了便于检查最终答案,Ibrahim 教授要求学生以产生字典序最小的方式划分分组并分配关键色,从而得到字典序最小的结果数组。
输入格式
第一行包含两个整数 $n$ 和 $k$($1 \leq n \leq 10^5$,$1 \leq k \leq 256$),分别表示图像中像素的数量和每组的最大大小。
第二行包含 $n$ 个整数 $p_1, p_2, \dots, p_n$($0 \leq p_i \leq 255$),其中 $p_i$ 表示第 $i$ 个像素的颜色。
输出格式
输出 $n$ 个用空格分隔的整数,表示应用色调分层滤镜后得到的字典序最小的数组。
说明/提示
对于第一个样例,一种可能的分组和关键色分配方式如下:
颜色 $2$ 属于分组 $[0,2]$,该组的关键色为 $0$。
颜色 $14$ 属于分组 $[12,14]$,该组的关键色为 $12$。
颜色 $3$ 和 $4$ 属于分组 $[3,5]$,该组的关键色为 $3$。
其他分组不会影响结果,因此未列出。
由 ChatGPT 4.1 翻译