#abc307g. [abc307_g]Approximate Equalization

[abc307_g]Approximate Equalization

問題文

長さ NN の整数列 A=(A1,A2,ldots,AN)A=(A_1,A_2,\\ldots,A_N) が与えられます。

高橋君は次の 22 種類の操作のうち 11 つを選んで行う事を、何回でも (00 回でも良い) 繰り返し行う事ができます。

  • 1leqileqN11\\leq i\\leq N-1 をみたす整数 ii を選び、AiA_i11 減らし、Ai+1A_{i+1}11 増やす。
  • 1leqileqN11\\leq i\\leq N-1 をみたす整数 ii を選び、AiA_i11 増やし、Ai+1A_{i+1}11 減らす。

数列 AA が次の条件をみたすようにするために必要な操作の回数の最小値を求めてください。

  • 任意の 11 以上 NN 以下の整数の組 (i,j)(i,j) に対して、lvertAiAjrvertleq1\\lvert A_i-A_j\\rvert\\leq 1 が成り立つ。

制約

  • 2leqNleq50002 \\leq N \\leq 5000
  • lvertAirvertleq109\\lvert A_i \\rvert \\leq 10^9
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN A1A_1 A2A_2 ldots\\ldots ANA_N

出力

数列 AA が問題文の条件をみたすようにするために必要な操作の回数の最小値を一行に出力せよ。


入力例 1

3
2 7 6

出力例 1

4

次のようにして 44 回の操作で AA が条件をみたすようにできます。

  • i=1i=1 を選び、A1A_111 増やし、 A2A_211 減らす。A=(3,6,6)A=(3,6,6) となる。
  • i=1i=1 を選び、A1A_111 増やし、 A2A_211 減らす。A=(4,5,6)A=(4,5,6) となる。
  • i=2i=2 を選び、A2A_211 増やし、 A3A_311 減らす。A=(4,6,5)A=(4,6,5) となる。
  • i=1i=1 を選び、A1A_111 増やし、 A2A_211 減らす。A=(5,5,5)A=(5,5,5) となる。

この時操作回数が最小であり、よって 44 を出力します。


入力例 2

3
-2 -5 -2

出力例 2

2

次のようにして 22 回の操作で AA が条件をみたすようにできます。

  • i=1i=1 を選び、A1A_111 減らし、 A2A_211 増やす。A=(3,4,2)A=(-3,-4,-2) となる。
  • i=2i=2 を選び、A2A_211 増やし、 A3A_311 減らす。A=(3,3,3)A=(-3,-3,-3) となる。

この時操作回数が最小であり、よって 22 を出力します。


入力例 3

5
1 1 1 1 -7

出力例 3

13

うまく操作することで、1313 回の操作の後で、 A=(0,0,1,1,1)A=(0,0,-1,-1,-1) にでき、これは問題文の条件をみたします。 1212 回以下の操作で条件をみたすようにすることはできないため、1313 を出力します。