WA,#12,#13
查看原帖
WA,#12,#13
748238
ghx0052楼主2023/10/11 22:48

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);
}
2023/10/11 22:48
加载中...