
Untitled
By: a guest on
Aug 3rd, 2012 | syntax:
C++ | size: 1.38 KB | hits: 15 | expires: Never
/*
this code was written by Zanaty
problem kind:
*/
#include<iostream>
#include<string.h>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>
#include<stdio.h>
#include<set>
#include<cmath>
#include<fstream>
#include<memory.h>
#include<map>
#include<sstream>
#include<climits>
#include <ext/hash_set>
#include <ext/hash_map>
using namespace __gnu_cxx;
#define OO 10e8
using namespace std;
#define rep(i,n) for((i)=0;(i)<(int)(n);(i)++)
#define reps(i,x,n) for((i)=(x);(i)<(int)(n);(i)++)
#define repi(i,n) for((i)=(n)-1;(i)>=0;(i)--)
#define SZ(v) (int)v.size()
#define mp(x,y) make_pair(x,y)
int A[1000005], B[1000005], C[1000005], D[1000005], arr[1000005];
int main() {
#ifndef ONLINE_JUDGE
freopen("test.txt", "rt", stdin);
//freopen("out.txt", "wt", stdout);
#endif
int n;
while (scanf("%d", &n) && n != 0) {
for(int i=1;i<=n;i++)
scanf("%d", &arr[i]);
A[0] = 0;
for(int i=0;i<=n;i++){
A[i] = A[i - 1] + arr[i];
}
B[n+1] = 0;
for(int i=n;i>=1;i--){
B[i] = B[i + 1] + arr[i];
}
C[0] = 1<<30;
for(int i=1;i<=n;i++){
C[i] = min(arr[i], C[i - 1]);
}
D[n+1] = 1<<30;
for(int i=n;i>=1;i--){
D[i] = min(arr[i], arr[i] + D[i + 1]);
}
int res = (D[1]>=0);
for(int i=2;i<=n;i++){
if (D[i] >= 0 && B[i] + C[i-1] >= 0) {
res++;
}
}
printf("%d\n",res);
}
return 0;
}