代码
#include<bits/stdc++.h>
const int N = 1e6 + 5;
int a[N];
__int128 tz[N],mxtz[N],sc[N];
int main(){
std::cin.tie(0)->sync_with_stdio(0);
memset(mxtz,0xc0,sizeof(mxtz));
memset(sc,0xc0,sizeof(sc));
int n,p;std::cin >> n >> p;
for (int i = 1;i <= n;i++) std::cin >> a[i];
for (int i = 1;i <= n;i++){
tz[i] = std::max(tz[i - 1],(__int128)0) + a[i];
mxtz[i] = std::max(mxtz[i - 1],tz[i]);
}
sc[1] = mxtz[1];
__int128 ans = sc[1];
for (int i = 2;i <= n;i++){
sc[i] = std::max(sc[i],sc[i - 1] + mxtz[i - 1]);
ans = std::max(ans,sc[i]);
}
std::cout << (int)(ans % p) << '\n';
return 0;
}