Problem:
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

Solution in PHP (5.6.30) (judge verdict: Wrong Answer)

<?php
error_reporting(0);
$stdin = file_get_contents('php://stdin');
$line = explode("\n",$stdin);
$fi = 0;
$cnt = 0;
$list = array();
$key = new stdclass();
foreach($line as $l) {
  if (strlen($l)==0) continue;
  if ($fi == 0) {
    $a = explode(" ",$l);
    $key->A = $a;
    $fi++;
    continue;
  }
  if ($fi > 0) {
    $a = explode(" ",$l);
    $key->X[] = $a;
  }
}
$cnt=0;
$prev=null;
$new=array();
foreach($key->X[0] as $v) {
  if ($prev != null) {
    //2回目以降処理
    if ($prev > 0) {
      //前の数が正なら、この数を負にする必要がある
      if (($prev + $v) > 0) {
        //ダメなので-1まで減らす
        $wk = $prev + $v;
        $cnt += $wk+1;
        $prev = -1;
        $new[]=$v-$cnt;
      }
      else {
        $prev = $prev + $v;
        $new[]=$v;
      }
    }
    else {
      //前はマイナスなのでプラスにする必要がある
      if (($prev + $v) < 0) {
        $wk = $prev + $v;
        $cnt += 1-$wk;
        $prev = 1;
        $new[]=$v+$cnt;
      }
      else {
        $prev = $prev + $v;
        $new[]=$v;
      }
    }
  }
  else {
    $prev = $v;
    $new[]=$v;
  }
}
$chk=0;
//合計が０になるかチェック
foreach($new as $v) {
  $chk+=$v;
}
//ゼロなら最後にもう一度操作するので足す
if ($chk==0) $cnt++;
printf("%d\n",$cnt);