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 翻译