#include <iostream>
#include <fstream>
#include <string> 
#include <cmath>  
#include <cstdlib>
#include <ctime>
#include <vector>
#include <algorithm>
#include <numeric>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <functional>

using namespace std;
using ll = long long;

#define FOR(i, m, n) for(int i = (m);i < (n);i++)
#define REP(i,n) for(int i = 0; i < int(n); i++)
#define VI vector<int>
#define VVI vector<vector<int>>
#define VVVI vector<vector<vector<int>>>
#define VL vector<ll>
#define VVL vector<vector<ll>>
#define VB vector<bool>
#define VVB vector<vector<bool>>
#define PAIR pair<int,int>
#define MP make_pair
#define VP vector<pair<int,int>>
#define VS vector<string>
#define QUE queue<int>
#define DEQ deque<int>
#define PQUE priority_queue<int> //5,5,4,3,3,2,...
#define REPQUE priority_queue<int, vector<int>, greater<int>> //1,1,2,3,4,4,5,...
#define SUM(obj) accumulate((obj).begin(), (obj).end(), 0)
#define SORT(obj) sort((obj).begin(), (obj).end()) // 1,2,3,4,5...
#define RESORT(obj) sort((obj).begin(), (obj).end(), greater<int>()) // 5,4,3,2,1...
#define UB(obj,n) upper_bound((obj).begin(), (obj).end(), n) //itr > n
#define LB(obj,n) lower_bound((obj).begin(), (obj).end(), n) //itr>= n

const ll INF = (ll)9e18;

int main() {
	int n;
	cin >> n;
	VL a(n), b(n);
	REP(i, n) {
		ll aa;
		cin >> aa;
		a[i] = aa;
		b[i] = aa;
	}
	ll countmin = INF;
	ll count = 0LL;
	ll sum = 0LL;
	
	//+
	REP(i,n) {
		sum += a[i];
		if (i % 2 == 0) {
			if (sum <= 0LL) {
				count += llabs(sum) + 1LL;
				sum = 1LL;
			}
		}

		if (i % 2 == 1) {
			if (sum >= 0LL) {
				count += llabs(sum) + 1LL;
				sum = -1LL;
			}
		}
		//cout << count << " ";
	}
	//cout << endl;
	countmin = min(countmin, count);
	
	//-
	count = 0LL;
	sum = 0LL;
	REP(i,n) {
		sum += b[i];
		if (i % 2 == 0) {
			if (sum >= 0LL) {
				count += llabs(sum) + 1LL;
				sum = -1LL;
			}
		}
	
		if (i % 2 == 1) {
			if (sum <= 0LL) {
				count += llabs(sum) + 1LL;
				sum = 1LL;
			}
		}
		//cout << count << " ";
	}
	//cout << endl;
	countmin = min(countmin, count);

	cout << countmin << endl;
	return 0;
}

//int main() {
//	int n;
//	cin >> n;
//	VL a(n),b(n);
//	REP(i, n) {
//		ll aa;
//		cin >> aa;
//		a[i] = aa;
//		b[i] = aa;
//	}
//	ll countmin = INF;
//	ll count = 0LL;
//	ll temp;
//
//	if (a[0] <= 0LL) {
//		temp = llabs(a[0]) + 1LL;
//		a[0] += temp;
//		count += temp;
//	}
//	FOR(i, 1, n) {
//		a[i] += a[i - 1];
//		if (i % 2 == 1) {
//			if (a[i] >= 0LL) {
//				temp = llabs(a[i]) + 1LL;
//				a[i] -= temp;
//				count += temp;
//			}
//		}
//		if (i % 2 == 0) {
//			if (a[i] <= 0LL) {
//				temp = llabs(a[i]) + 1LL;
//				a[i] += temp;
//				count += temp;
//			}
//		}
//	}
//	countmin = min(countmin, count);
//	//cout << count << endl;
//	
//	count = 0LL;
//	if (b[0] >= 0) {
//		temp = llabs(b[0]) + 1LL;
//		b[0] -= temp;
//		count += temp;
//	}
//	FOR(i, 1, n) {
//		b[i] += b[i - 1];
//		if (i % 2 == 1) {
//			if (b[i] <= 0LL) {
//				temp = llabs(b[i]) + 1LL;
//				b[i] += temp;
//				count += temp;
//			}
//		}
//		if (i % 2 == 0) {
//			if (b[i] >= 0LL) {
//				temp = llabs(b[i]) + 1LL;
//				b[i] -= temp;
//				count += temp;
//			}
//		}
//	}
//
//	//cout << count << endl;
//
//	//REP(i, n) cout << a[i] << " ";
//	//cout << endl;
//	//REP(i, n) cout << b[i] << " ";
//	//cout << endl;
//
//	countmin = min(countmin, count);
//
//	cout << countmin << endl;
//	return 0;
//}


Measured memory_bytes: 1792