记录编号 133049 评测结果 AAAAAAAAAA
题目名称 [NOIP 2013PJ]小朋友的数字 最终得分 100
用户昵称 GravatarRP++ 是否通过 通过
代码语言 C++ 运行时间 0.388 s
提交时间 2014-10-27 06:35:17 内存使用 15.57 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>

using namespace std;

long long s[1000010]={0};
long long f[1000010]={0};

int main()
{
    freopen("number2013.in","r",stdin);
	freopen("number2013.out","w",stdout);
	long long nPeo,p;
	scanf("%lld%lld",&nPeo,&p);
	long long num;
	for(int i=1;i<=nPeo;i++)
	{
		scanf("%lld",&num);
		s[i]=s[i-1]+num;
	}
	long long mmin=0;
	if(s[1]<0)mmin=s[1];
	f[1]=s[1];
	for(int i=2;i<=nPeo;i++)
	{
		f[i]=max(f[i-1],s[i]-mmin);
		if(s[i]<mmin)mmin=s[i];
	}
	long long mmax=f[1]*2;
	long long ans=f[1];
	bool flag=false;
	for(int i=2;i<nPeo;i++)
	{
		if(f[i]>0)
		{
			mmax=(mmax%p+f[i]%p)%p;
			if(f[i]>abs(f[1]))flag=true;
		}
	}
	if(mmax<ans&&!flag)mmax=ans;
	printf("%lld",mmax%p);
}



/*5 981
-409 -401 97 -96 -301 */

/*10 711
907 -565 310 643 -111 -180 -426 -758 -901 253*/