比赛 20121023 评测结果 WWAAAAAAAA
题目名称 圆圈舞蹈 最终得分 80
用户昵称 QhelDIV 运行时间 0.065 s
代码语言 C++ 内存使用 2.34 MiB
提交时间 2012-10-23 20:37:50
显示代码纯文本
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("circlea.in");
ofstream fout("circlea.out");
long long Max,Maxpos,N,Dis[100001],ck[100001],antick[100001],MMax;
int main()
{
	fin>>N;
	for(int i=1;i<=N;i++)
	{
		fin>>Dis[i];
		ck[i]=ck[i-1]+Dis[i];
	}
	for(int i=1;i<=N;i++)
		antick[i]=ck[N]-ck[i];
	
	for(int i=1;i<=N;i++)
	{
		if(min(ck[i],antick[i])>Max)
		{
			Max=min(ck[i],antick[i]);
			Maxpos=i;
		}
		else
			break;
	}
	
	for(int i=2;i<=N;i++)
	{
		Max=min(ck[Maxpos]-ck[i-1],antick[Maxpos]+ck[i-1]);
		while(min(ck[Maxpos+1]-ck[i-1],antick[Maxpos+1]+ck[i-1])>Max && Maxpos<N)
		{
			Max=min(ck[Maxpos+1]-ck[i-1],antick[Maxpos+1]+ck[i-1]);
			Maxpos++;
		}
		if(Maxpos>=N)
			break;
		MMax=max(MMax,Max);
	}
	fout<<MMax<<endl;
	fin.close();
	fout.close();
	return 0;
}