TopCoder

User's AC Ratio

100.0% (2/2)

Submission's AC Ratio

100.0% (2/2)

Tags

Description

小風有一個數列 $a_1, a_2, \ldots, a_N$,每一項皆落在 $[0, M - 1]$,小風想把這個序列變成遞增數列,也就是每一項皆不比前一項小,他的操作方式如下:

  • 選取正整數 $k$ 以及 $k$ 個下標 $1 \leq i_1 < i_2 < \ldots < i_k \leq N$。
  • 將每個元素 $a_{i_j}, (1 \leq j \leq k)$ 變成 $( (a_{i_j} + 1)\ \mod M)$。

小風想知道他最少需要幾次操作才能達成他的目標,請你幫幫小風。

Input Format

輸入第一行有兩個正整數 $N, M (1 \leq N, M \leq 300000)$。
輸入第二行包含 $N$ 個整數 $a_1, a_2, \ldots, a_N (0 \leq a_i < M)$。

Output Format

請輸出一個整數,代表小風至少需要幾次操作。

Sample Input 1

5 3
0 0 0 1 2

Sample Output 1

0

Sample Input 2

5 7
0 6 1 3 2

Sample Output 2

1

Hints

Problem Source

Codeforces

Subtasks

No. Testdata Range Constraints Score
1 0~1 範例測資 0
2 0~30 無額外限制 100

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 524288 65536 1 2
1 1000 524288 65536 1 2
2 1000 524288 65536 2
3 1000 524288 65536 2
4 1000 524288 65536 2
5 1000 524288 65536 2
6 1000 524288 65536 2
7 1000 524288 65536 2
8 1000 524288 65536 2
9 1000 524288 65536 2
10 1000 524288 65536 2
11 1000 524288 65536 2
12 1000 524288 65536 2
13 1000 524288 65536 2
14 1000 524288 65536 2
15 1000 524288 65536 2
16 1000 524288 65536 2
17 1000 524288 65536 2
18 1000 524288 65536 2
19 1000 524288 65536 2
20 1000 524288 65536 2
21 1000 524288 65536 2
22 1000 524288 65536 2
23 1000 524288 65536 2
24 1000 524288 65536 2
25 1000 524288 65536 2
26 1000 524288 65536 2
27 1000 524288 65536 2
28 1000 524288 65536 2
29 1000 524288 65536 2
30 1000 524288 65536 2