50分求助/kk
查看原帖
50分求助/kk
203008
YamadaRyou楼主2021/9/12 14:53
#include<stdio.h>
int a[1000001],dp,n,p;
long long b[1000001];
int main(){
	scanf("%d%d",&n,&p);
	for(int i=1;i<=n;++i)scanf("%d",a+i);
	dp=b[1]=a[1];
	for(int i=2;i<=n;++i){
		dp=dp>0?dp+a[i]:a[i];
		b[i]=b[i-1]>dp?b[i-1]:dp;
	}bool flag=b[1]>=0;int c=b[1]%p;
	if(n>1)c=(c<<1)%p;
	for(int i=3;i<=n;++i){
		if(b[i-1]>0){
			if(!flag){
				if(b[i-1]>=-b[1])flag=1;
				else b[1]+=b[i-1];
			}
			c=(c+b[i-1])%p;
		}
	}
	printf("%d",flag?c:a[1]%p);
	return 0;
}

WA了#2#7#8#9#10,思路和第一篇题解一样

2021/9/12 14:53
加载中...