0
已解决
刘意阳
初级天翼
初级天翼
#include <iostream>
using namespace std;
long long n,p,maxn,x,pd,a[1000001][3];
int main(){
cin>>n>>p;
p=abs(p);
long long x;
cin>>x;
a[1][1]=x;
a[1][0]=x;
maxn=x;
for(long long i=2;i<=n;i++){
cin>>x;
if(a[i-1][1]>0){
a[i][1]=a[i-1][1]+x;
}else{
a[i][1]=x;
}
a[i][0]=max(maxn,a[i][1]);
maxn=a[i][0];
}
a[1][2]=a[1][0];
a[2][2]=2*a[1][0];
if(a[2][2]>=a[1][2]){
pd=1;
}
for(long long i=3;i<=n;i++){
if(a[i-1][0]<0){
a[i][2]=a[i-1][2];
}else{
a[i][2]=a[i-1][2]+a[i-1][0];
if(a[i][2]>a[1][2]){
pd=1;
}
if(a[i][2]>1000000000){
a[i][2]%=p;
}
}
}
if(pd==1){
cout<<a[n][2]%p;
}else{
cout<<a[1][2]%p;
}
return 0;
}