代码:
#include <bits/stdc++.h>
#define maxn 1000005
#define int long long
#define _for(i, a, b) for (int i = (a); i <= (b); i++)
int n, p;
int a[maxn], f[maxn], score[maxn];
void Max_sum() {
a[0] = -maxn;
_for (i, 1, n) {
if (a[i - 1] >= 0)
a[i] = (a[i - 1] + a[i]) % p;
f[i] = std::max(a[i], a[i - 1]) % p;
}
}
signed main() {
scanf("%lld%lld", &n, &p);
_for (i, 1, n)
scanf("%lld", a + i);
Max_sum();
score[1] = f[1];
int ans = (score[1] + f[1]) % p;
_for (i, 2, n - 1) {
score[i] = ans % p;
ans = std::max(ans, score[i] + f[i]) % p;
}
ans = std::max(score[1], ans % p);
printf("%lld\n", ans);
return 0;
}
感觉是最后的 for 出了问题。
求大佬解决,卡了蒟蒻一整天了