记录编号 232249 评测结果 AAAAAAAAAA
题目名称 [福州培训2010] 最大和 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.068 s
提交时间 2016-02-29 13:50:11 内存使用 0.84 MiB
显示代码纯文本
#include<cstdio>
#define max(a,b) a>b?a:b
int num[200050];
int read(){
	int x;char ch;bool minus=false;
	while(ch=getchar(),(ch<'0'||ch>'9')&&ch!='-');
	if(ch=='-'){
		ch=getchar();
		minus=true;
	}
	x=ch-48;
	while(ch=getchar(),ch>='0'&&ch<='9')x=x*10+ch-48;
	return minus?-x:x;
}
int main(){
	freopen("maxsum.in","r",stdin);
	freopen("maxsum.out","w",stdout);
	int n=read();
	for(int i = 0;i<n;++i){
		num[i]=read();
		num[n+i]=num[i];
	}
	int maxsum=-50000000,nowsum=0;
	int l=0;
	int lim=n<<1;
	for(int k=0;k<lim;++k){
		nowsum+=num[k];
		if(k-l==n+1){
			nowsum-=num[l++];
		}
		maxsum=max(maxsum,nowsum);
		if(nowsum<=0){//这里之前是nowsum<0,有3个点WA 
			l=k+1;
			nowsum=0;
		}
	}
	printf("%d\n",maxsum);
	fclose(stdin);fclose(stdout);
	return 0;
}