代码如下:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
long long a[maxn], f[maxn], h[maxn], g[maxn], ans, Ans, n, mod;
int main()
{
cin >> n >> mod;
f[0] = -1e18;
ans = -1e18;
h[0] = -1e18;
g[0] = -1e18;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
h[i] = max(h[i - 1] + a[i], a[i]);
f[i] = max(f[i - 1], h[i]);
if(i == 1)
{
g[i] = f[i];
}
else
{
g[i] = ans;
}
if(i < n)
{
ans = max(ans, g[i] + f[i]);
}
Ans = max(Ans, g[i]);
}
cout << Ans % mod << endl;
return 0;
}
评测记录:
https://www.luogu.com.cn/record/59551238