代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+5;
ll n,dp[N],a[N],mx=INT_MIN,f[N],mod;
int main(){
cin>>n>>mod;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dp[1]=a[1];
mx=max(mx,a[1]);
for(int i=2;i<=n;i++){
dp[i]=max(dp[i-1]+a[i],max(a[i],mx));
mx=max(dp[i],max(a[i],mx));
}
mx=a[1];
f[1]=a[1];
f[2]=2*a[1];
mx=max(max(mx,f[1]+dp[1]),dp[2]+f[2]);
for(int i=3;i<=n;i++){
f[i]=mx;
mx=max(mx,dp[i]+f[i]);
}
cout<<endl;
cout<<f[n]%mod;
return 0;
}