rt
代码
#include<bits/stdc++.h>
#define max(a, b) (a > b ? a : b)
#define abs(x) (x < 0 ? -x : x)
void write(__int128 x) {
if (x < 0) putchar('-'), x = -x;
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
return;
}
__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;
}
using namespace std;
__int128 n, mod, a, b, ans, maxs, maxn;
int main() {
n = read(), mod = read(), a = read();
if (n < 2) {
write(a);
return 0;
}
ans = max(a, 0), maxs = b = a, maxn = a * 2;
for (long long i = 2; i < n; i ++) {
a = read();
ans += a;
if (ans < 0) ans = abs(ans) % mod * -1;
maxs = max(maxs, ans);
maxn += max(maxs, 0ll);
ans = max(ans, 0ll);
}
write(max(b, maxn) % mod);
}