代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, p, a[1000005], b[1000006], c[1000006];
signed main()
{
cin >> n >> p;
p = abs(p);
for (int i = 1; i <= n; i ++)
{
cin >> a[i];
}
int mx1 = a[1], mx2 = -2147483647, tmp;
bool f = 0;
for (int i = 1; i <= n; i ++)
{
tmp += a[i];
mx2 = max(mx2, tmp);
tmp = max(tmp, 0ll);
b[i] = mx2;
c[i] = mx1;
if (b[i] > 0 || i == 1) mx1 = b[i] + c[i];
if (mx1 > c[1])
{
mx1 = mx1 % p;
f = 1;
}
}
if (f) cout << c[n] % p;
else cout << c[1] % p;
return 0;
}
测试点:
here