#include<bits/stdc++.h>
using namespace std;
long long n,p,x,ans=-1e9,mx=-1e9,maxs=-1e9,f[1000001],s[1000001],a[1000001];
long long read()
{
long long x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return f*x;
}
int main()
{
memset(a,-0x7f,sizeof a);
memset(s,-0x7f,sizeof s);
n=read();
p=read();
for(int i=1;i<=n;++i)
{
x=read();
a[i]=a[i-1]+x>x?a[i-1]+x:x;
mx=mx>a[i]?mx:a[i];
f[i]=mx%p;
}
s[1]=f[1];
ans=s[1];
for(int i=2;i<=n;++i)
{
maxs=s[i-1]+f[i-1]>maxs?s[i-1]+f[i-1]:maxs;
s[i]=maxs;
ans=ans>s[i]?ans:s[i];
}
if(ans<0) printf("-");
printf("%lld",abs(ans)%p);
return 0;
}
Subtask1 第1个点WA了,各位神佬帮忙检查一下代码,谢谢Orz