题目:http://www.luogu.org/problem/show?pid=2629#
分析:。。。
代码:
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int Tmax=1000005;
int n,a[Tmax],suml[Tmax],sumr[Tmax],fl[Tmax],fr[Tmax],ans;
int main()
{
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n;i++)
suml[i]=suml[i-1]+a[i];
for(i=n;i>=1;i--)
sumr[i]=sumr[i+1]+a[i];
fl[1]=suml[1];fr[n]=suml[n];
for(i=2;i<=n;i++)
fl[i]=min(fl[i-1],suml[i]);
for(i=n-1;i>=1;i--)
fr[i]=min(fr[i+1],suml[i]);
for(i=1;i<=n;i++)
{
if(a[i]<0) continue;
if(fr[i]-suml[i-1]<0) continue;
if(fl[i-1]+sumr[i]<0) continue;
ans++;
}
printf("%d",ans);
return 0;
}