蒟蒻求助
查看原帖
蒟蒻求助
838482
xuweichi楼主2023/10/17 16:04

代码:

#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;
}

测试点: herehere

2023/10/17 16:04
加载中...