伟大无产阶级斗士的第一步
#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
int dp[100010];
int s[100010];
int bs[100010];
int main()
{
int n,maxx,tep,sum,ans;
while(~scanf("%d",&n))
{
tep=0;
maxx=0;
ans=0;
sum=0;
memset(dp,0,sizeof(dp));
memset(bs,0,sizeof(bs));
for(int i=1 ; i<=n ; i++)wf
{
scanf("%d",&s[i]);
}
for(int i=1 ; i<=n ; i++)
{
tep=max(tep,0)+s[i];
maxx=max(tep,maxx);
dp[i]=maxx;
}
tep=0;
for(int i=n ; i>=1 ; i--)
{
tep=max(tep,0)+s[i];
sum=max(sum,tep);
bs[i]=sum;
}
for(int i=1 ; i<n; i++)
{
ans=max(dp[i]+bs[i+1],ans);
}
ans=max(ans,dp[n]);
printf("%d\n",ans);
}
return 0;
}
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
int dp[100010];
int s[100010];
int bs[100010];
int main()
{
int n,maxx,tep,sum,ans;
while(~scanf("%d",&n))
{
tep=0;
maxx=0;
ans=0;
sum=0;
memset(dp,0,sizeof(dp));
memset(bs,0,sizeof(bs));
for(int i=1 ; i<=n ; i++)wf
{
scanf("%d",&s[i]);
}
for(int i=1 ; i<=n ; i++)
{
tep=max(tep,0)+s[i];
maxx=max(tep,maxx);
dp[i]=maxx;
}
tep=0;
for(int i=n ; i>=1 ; i--)
{
tep=max(tep,0)+s[i];
sum=max(sum,tep);
bs[i]=sum;
}
for(int i=1 ; i<n; i++)
{
ans=max(dp[i]+bs[i+1],ans);
}
ans=max(ans,dp[n]);
printf("%d\n",ans);
}
return 0;
}