CF1168A Increasing by Modulo
题目描述
蟾蜍 Zitz 有一个整数数组,每个整数都在 $0$ 到 $m-1$ 之间(包含 $0$ 和 $m-1$)。这些整数为 $a_1, a_2, \ldots, a_n$。
每次操作,Zitz 可以选择一个整数 $k$ 和 $k$ 个下标 $i_1, i_2, \ldots, i_k$,满足 $1 \leq i_1 < i_2 < \ldots < i_k \leq n$。然后,他将每个被选中的 $a_{i_j}$ 替换为 $((a_{i_j}+1) \bmod m)$。整数 $m$ 在所有操作和下标中都是固定的。
这里 $x \bmod y$ 表示 $x$ 除以 $y$ 的余数。
Zitz 想用最少的操作次数,使他的数组变为非递减数组。请你求出所需的最小操作次数。
输入格式
第一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 300\,000$),分别表示数组的长度和参数 $m$。
第二行包含 $n$ 个用空格分隔的整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i < m$),表示给定的数组。
输出格式
输出一个整数,表示将数组变为非递减数组所需的最小操作次数。如果不需要操作,输出 $0$。
可以证明,通过足够多的操作,总能将数组变为非递减数组。
说明/提示
在第一个样例中,数组已经是非递减的,所以答案是 $0$。
在第二个样例中,你可以选择 $k=2$,$i_1=2$,$i_2=5$,数组变为 $[0,0,1,3,3]$。此时数组是非递减的,所以答案是 $1$。
由 ChatGPT 4.1 翻译