蒟蒻60分求助
查看原帖
蒟蒻60分求助
548030
tort楼主2021/8/30 23:58
#include<stdio.h>
inline long long read(){
	long long k=0,j=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')j=-1;c=getchar();}
	while(c>='0'&&c<='9')k=k*10+c-'0',c=getchar();
	return k*j;
}
long long max(long long a,long long b){return a>b?a:b;}
long long s[1000005],a[1000005];
int main(){
	long long n=read(),q=read();
	for(long long i=1;i<=n;i++)a[i]=read();
	for(long long i=1;i<=n;i++){
		s[i]=s[i-1]+a[i];
		if(s[i]<0)s[i]=a[i]; 
	}
	s[0]=-2147483647;
	for(long long i=1;i<=n;i++)s[i]=max(s[i],s[i-1]);
	a[1]=s[1];long long jmx=a[1]+s[1],ans=a[1]%q;
	for(long long i=2;i<=n;i++){
		a[i]=jmx;ans=max(ans,a[i])%q;
		jmx=max(jmx,(a[i]+s[i]));
	}
	printf("%lld",ans%q);
	return 0;
}
2021/8/30 23:58
加载中...