#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int n, l = 0, r = 0;
int d[100010];
long long int ans = 0;
long long int money;
typedef struct node {
int no, zai;
}A;
A que[100010];
//由于在最后一头奶牛的位置要结束 故后面钱够要去还前面的人
int main() {
cin >> n;
int tmp;
for (int i = 1; i <= n; i++) {
cin >> tmp;
if (tmp >= 0) {
money += tmp;
ans++;
int tmpi = i;
//能还之前的
while (money >= que[l].zai && que[l].zai != 0) {
ans += abs(tmpi - que[l].no);
tmpi = que[l].no;
money -= que[l].zai;
l++;
}
ans += abs(i - tmpi);
}
else {
ans++;
//能还上
if (money >= abs(tmp))
money -= abs(tmp);
else {
//标记不能还的位置入队
que[r++] = { i, -tmp };
}
}
}
cout << ans;
return 0;
}