AT_arc220_c [ARC220C] Range Increment

题目描述

给定整数 $N$、$M$、$K$,以及一个长度为 $N$ 的整数序列 $A=(A_1,A_2,\ldots,A_N)$。保证 $A$ 的每个元素都在 $0$ 到 $M-1$ 之间(包含端点)。 你可以对序列 $A$ 进行 $0$ 到 $K$ 次如下操作(可以不做操作): - 选择一对整数 $(l,r)$,满足 $1\le l\le r\le N$,然后对于每个 $k=l,l+1,\ldots,r$,将 $A_k$ 替换成 $(A_k+1) \bmod M$。 请在所有可能的操作之后,找出字典序最小的序列 $A$。 共有 $T$ 组测试数据,请依次输出每组的答案。 什么是序列的字典序? 一个序列 $S = (S_1,S_2,\ldots,S_{|S|})$ 被称为**字典序更小**于序列 $T = (T_1,T_2,\ldots,T_{|T|})$,当且仅当以下条件之一成立:其中 $|S|$ 和 $|T|$ 分别表示 $S$ 和 $T$ 的长度。 1. $|S| \lt |T|$ 且 $(S_1,S_2,\ldots,S_{|S|}) = (T_1,T_2,\ldots,T_{|S|})$。 2. 存在整数 $1 \leq i \leq \min\lbrace |S|, |T| \rbrace$,使得以下两个条件同时成立: - $(S_1,S_2,\ldots,S_{i-1}) = (T_1,T_2,\ldots,T_{i-1})$ - $S_i$ 在数值上小于 $T_i$。

输入格式

输入由标准输入给出,格式如下: > $T$ $\text{case}_1$ $\text{case}_2$ $\vdots$ $\text{case}_T$ 每组测试数据格式如下: > $N$ $M$ $K$ $A_1$ $A_2$ $\ldots$ $A_N$

输出格式

请按照输入顺序输出各组测试数据的答案,每组占一行。 对于每组测试数据,输出操作后字典序最小的序列 $A$ 的所有元素,以空格分隔。

说明/提示

### 样例解释 1 考虑第一个样例。 通过如下两次操作,可以得到 $A=(2,0,0,1)$: - 第一次操作:选择 $(l,r)=(2,3)$,此时 $A=(2,0,5,1)$。 - 第二次操作:选择 $(l,r)=(3,3)$,此时 $A=(2,0,0,1)$。 ### 数据范围 - $1\le T\le 3\times 10^5$ - $1\le N\le 3\times 10^5$ - $2\le M\le 10^9$ - $1\le K\le 10^{15}$ - $0\le A_i < M$ - 所有测试用例的 $N$ 之和不超过 $3\times 10^5$。 - 所有输入都是整数。 由 ChatGPT 5 翻译