哪位dalao看看呗
#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
inline __int128 read(){
__int128 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 x*f;
}
inline void write(__int128 x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9) write(x/10);
putchar(x%10+'0');
}
int main(){
__int128 n=read(),p=read(),a[n],b[n],c[n];
for(__int128 i=0;i<n;i++) a[i]=read();
__int128 maxint=a[0];
b[0]=a[0];
for(__int128 i=1,ans=a[0];i<n;i++){
ans+=a[i];
if(ans>maxint) maxint=ans;
else ans=maxint;
b[i]=maxint;
}
c[0]=b[0];
maxint=c[0];
__int128 em=b[0]*2;
for(__int128 i=1;i<n;i++){
c[i]=em;
if((b[i]+c[i])>em) em=b[i]+c[i];
if(c[i]>maxint) maxint=c[i];
}
write(maxint%p);
return 0;
}