#include<bits/stdc++.h>
using namespace std;
int a[200010],f[200010],i,j,le,mx,n,r=1,sumn;
bool fg;
int main()
{
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d",&a[i]);
f[i]=f[i-1]+a[i];
if(f[i]>=f[r])
r=i;
if(a[i]>0)
fg=true;
}
if(!fg)
{
mx=-10001;
for(i=1;i<=n;++i)
mx=max(mx,a[i]);
printf("%d",mx);
}
else
{
le=1;
mx=sumn=f[r];
while(r<=n)
{
for(;le<=r;++le)
{
sumn-=a[le-1];
if(sumn>mx)
mx=sumn;
}
for(i=++r;i<=n;++i)
{
if(f[i]-f[le-1]>=f[r]-f[le-1])
r=i;
}
sumn=f[r]-f[le-2];
}
printf("%d",mx);
}
return 0;
}
结果,悬赏关注