AtCoder Beginner Contest 059

C - Sequence


Time limit時間制限 : 2sec / Memory limitメモリ制限 : 256MB

配点 : 300

問題文

長さ N の数列があり、i 番目の数は a_i です。 あなたは 1 回の操作でどれか 1 つの項の値を 1 だけ増やすか減らすことができます。

以下の条件を満たすために必要な操作回数の最小値を求めてください。

  • すべてのi (1≦i≦n) に対し、第 1 項から第 i 項までの和は 0 でない
  • すべてのi (1≦i≦n-1) に対し、i 項までの和と i+1 項までの和の符号が異なる

制約

  • 2≦ n ≦ 10^5
  • |a_i| ≦ 10^9
  • a_i は整数

入力

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

n
a_1 a_2 ... a_n

出力

必要な操作回数の最小値を出力せよ。


入力例 1

4
1 -3 1 0

出力例 1

4

例えば、数列を 1, -2, 2, -24 回の操作で変更することができます。この数列は 1, 2, 3, 4 項までの和がそれぞれ 1, -1, 1, -1 であるため、条件を満たしています。


入力例 2

5
3 -6 4 -5 7

出力例 2

0

はじめから条件を満たしています。


入力例 3

6
-1 4 3 2 -5 4

出力例 3

8

Score : 300 points

Problem Statement

You are given an integer sequence of length N. The i-th term in the sequence is a_i. In one operation, you can select a term and either increment or decrement it by one.

At least how many operations are necessary to satisfy the following conditions?

  • For every i (1≤i≤n), the sum of the terms from the 1-st through i-th term is not zero.
  • For every i (1≤i≤n-1), the sign of the sum of the terms from the 1-st through i-th term, is different from the sign of the sum of the terms from the 1-st through (i+1)-th term.

Constraints

  • 2 ≤ n ≤ 10^5
  • |a_i| ≤ 10^9
  • Each a_i is an integer.

Input

Input is given from Standard Input in the following format:

n
a_1 a_2 ... a_n

Output

Print the minimum necessary count of operations.


Sample Input 1

4
1 -3 1 0

Sample Output 1

4

For example, the given sequence can be transformed into 1, -2, 2, -2 by four operations. The sums of the first one, two, three and four terms are 1, -1, 1 and -1, respectively, which satisfy the conditions.


Sample Input 2

5
3 -6 4 -5 7

Sample Output 2

0

The given sequence already satisfies the conditions.


Sample Input 3

6
-1 4 3 2 -5 4

Sample Output 3

8

Submit提出する