問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
あなたは paiza 植物園で働いています。
この植物園では N 個のマスが横一列にならんでおり、各マスには植木鉢が 1 つずつ置かれています。
左から i 番目のマスをマス i と表します。
あなたの仕事は各マスの植木鉢に適切な量の水を注ぐことです。
マス i の植木鉢に注ぐ水の目標量は A_i です。
あなたは以下の 2 種類の操作を、任意の順番で任意の回数だけ行うことができます。(いまいるマスをマス x とします。)
・マス x+1 にある植木鉢に水を 1 注ぐ。その後、マス x+1 に移動する。
・マス x-1 にある植木鉢に水を 1 注ぐ。その後、マス x-1 に移動する。
各操作の後、マスの外 (マス 0, マス N+1) に出るような操作を行うことはできません。
最初あなたはマス 1 におり、すべての操作を終えたあとマス 1 いなければなりません。
すべての操作後マス i の植木鉢に実際に注がれた水の量を B_i としたとき、マス 1 から始めてマス 1 で終わる操作のうち、目標量との差の総和 Σ|A_i - B_i| (1 ≦ i ≦ N) の最小値を求めてください。
入力は以下のフォーマットで与えられます。
N
A_1 A_2 ... A_N
すべての操作後マス i の植木鉢に実際に注がれた水の量を B_i としたとき、マス 1 から始めてマス 1 で終わる操作のうち、目標量との差の総和 Σ|A_i - B_i| (1 ≦ i ≦ N) の最小値を求めてください。
最後は改行し、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 1000
・0 ≦ A_i ≦ 100
5
1 3 2 0 2
2
5
9 12 1 29 8
23
20
85 53 100 84 3 7 97 2 16 21 85 3 26 17 36 42 11 83 28 29
306