Increasing by Modulo
题意翻译
给出 $n,m$,以及 $m$ 个数 $a_1,a_2,\ldots,a_n$。
每次选一个数 $k$ 及 $k$ 个数 $1\leq b_1\lt b_2\lt\ldots\lt b_k\leq n$,并将所有 $a_{b_i}$ 变成 $(a_{b_i}+1)\bmod m$,求最少操作数,使 $a$ 数组不下降。
题目描述
Toad Zitz has an array of integers, each integer is between $ 0 $ and $ m-1 $ inclusive. The integers are $ a_1, a_2, \ldots, a_n $ .
In one operation Zitz can choose an integer $ k $ and $ k $ indices $ i_1, i_2, \ldots, i_k $ such that $ 1 \leq i_1 < i_2 < \ldots < i_k \leq n $ . He should then change $ a_{i_j} $ to $ ((a_{i_j}+1) \bmod m) $ for each chosen integer $ i_j $ . The integer $ m $ is fixed for all operations and indices.
Here $ x \bmod y $ denotes the remainder of the division of $ x $ by $ y $ .
Zitz wants to make his array non-decreasing with the minimum number of such operations. Find this minimum number of operations.
输入输出格式
输入格式
The first line contains two integers $ n $ and $ m $ ( $ 1 \leq n, m \leq 300\,000 $ ) — the number of integers in the array and the parameter $ m $ .
The next line contains $ n $ space-separated integers $ a_1, a_2, \ldots, a_n $ ( $ 0 \leq a_i < m $ ) — the given array.
输出格式
Output one integer: the minimum number of described operations Zitz needs to make his array non-decreasing. If no operations required, print $ 0 $ .
It is easy to see that with enough operations Zitz can always make his array non-decreasing.
输入输出样例
输入样例 #1
5 3
0 0 0 1 2
输出样例 #1
0
输入样例 #2
5 7
0 6 1 3 2
输出样例 #2
1
说明
In the first example, the array is already non-decreasing, so the answer is $ 0 $ .
In the second example, you can choose $ k=2 $ , $ i_1 = 2 $ , $ i_2 = 5 $ , the array becomes $ [0,0,1,3,3] $ . It is non-decreasing, so the answer is $ 1 $ .