WA0pts求助
查看原帖
WA0pts求助
1112305
Alpha1115楼主2024/8/7 15:38
#include <bits/stdc++.h>
using namespace std;
int n, p, op;
long long x;
__int128 a[1000005];
__int128 b[1000005];
__int128 s[1000005];
__int128 mx = -2147483647, tmp, sum;
int main(){
	cin >> n >> p;
	for (int i = 1; i <= n; i ++) {
		cin >> x;
        if (x < 0) {
            x = -x;
            x %= p;
            x = -x;
        } else op = 1;
		a[i] = x;
	}
    for (int i = 1; i <= n; i ++) {
        if (!op) {
            if (mx > a[i]) mx = a[i];
        } else {
            sum += a[i];
            if (sum < 0) sum = 0;
            sum = sum % p;
            if (sum > mx) mx = sum;
        }
        b[i] = mx;
    }
	mx = s[1] = b[1];
	for (int i = 2; i <= n; i ++) { 
		tmp = b[i - 1] + s[i - 1];
		if (tmp < 0) {
			tmp = -tmp;
			tmp = tmp % p;
			tmp = -tmp;
		} else tmp = tmp % p;
		if (tmp > mx) mx = tmp;
		s[i] = mx;
	}
    mx = -INT_MAX;
	for (int i = 1; i <= n; i ++) 
        if (mx < s[i]) mx = s[i];
    x = mx;
    cout << x;
}

样例全过

2024/8/7 15:38
加载中...