记录编号 141746 评测结果 AAAAAAAAAA
题目名称 [福州培训2010] 最大和 最终得分 100
用户昵称 GravatarTA 是否通过 通过
代码语言 C++ 运行时间 0.017 s
提交时间 2014-12-03 21:15:42 内存使用 11.00 MiB
显示代码纯文本
#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
#include<algorithm>
char * ptr=(char *)malloc(10000000);
int a[100001],max1[100001],max2[100002];
inline void in(int &x){
	bool flag=0;
	while(*ptr<'0'||*ptr>'9')
		if(*++ptr=='-')
			flag=1;
	x=0;
	while(*ptr>47&&*ptr<58)x=x*10+*ptr++-'0';
	if(flag)x=-x;
}
int main(){
	freopen("maxsum.in","r",stdin);
	freopen("maxsum.out","w",stdout);
	int N,f=0,i,ans=-0x7fffffff,s;
	fread(ptr,1,10000000,stdin);
	in(N);
	for(i=1;i<=N;++i)in(a[i]);
	for(i=1;i<=N;++i){
		if(f>0)f+=a[i];
		else f=a[i];
		if(f>ans)ans=f;
	}
	max1[0]=-0x7fffffff,max2[N+1]=-0x7fffffff;
	for(s=0,i=1;i<=N;++i)s+=a[i],max1[i]=max(max1[i-1],s);
	for(s=0,i=N;i;--i)s+=a[i],max2[i]=max(max2[i+1],s);
	for(i=N;i;--i)ans=max(ans,max2[i+1]+max1[i]);
	printf("%d",ans);
}