CF980C Posterized

题目描述

Ibrahim 教授为他的算法课准备了期末作业。他要求学生实现“色调分层”图像滤镜。 他们的算法将在一个整数数组上进行测试,其中第 $i$ 个整数表示图像中第 $i$ 个像素的颜色。该图像为黑白色,因此每个像素的颜色是 $0$ 到 $255$(包含)之间的整数。 为了实现该滤镜,学生需要将黑白色范围 $[0, 255]$ 划分为若干组连续的颜色,并为每组选择一个颜色作为该组的“关键色”。为了保留图像细节,每组的大小不能超过 $k$,且每种颜色只能属于一个组。 最后,学生需要将数组中每个像素的颜色替换为其所属组的关键色。 为了更好地理解效果,下面是一只晒太阳的乌龟图片,右侧 $k$ 逐渐增大时应用了色调分层滤镜的效果。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF980C/a5e04b9b80b48f601f9e0b203cd8ee3718afd0e4.png) 为了便于检查最终答案,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 翻译