为什么我这份代码88pts,第三个样例啥都没输出
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef __int128 ill;
const ll MAXN = 4e7 + 7, Mod = (1 << 30) - 1;
ll n, type;
ll A[MAXN], S[MAXN], G[MAXN];
ll Q[MAXN];
ll B[MAXN], P[MAXN];
#define val(x) (2 * S[x] - S[G[x]])
ill read() {
ill x = 0, f = 1; char s = getchar();
while (s < '0' || s > '9') f |= s == '-1', s = getchar();
while (s >= '0' && s <= '9') x = x * 10 + s - '0', s = getchar();
return x * f;
}
void write(ill x) {
if (x == 0) return ;
write(x / 10); putchar(x % 10 + '0');
}
int main () {
n = read(), type = read();
if (type == 1) {
ll x = read(), y = read(), z = read(), b1 = read(), b2 = read(), m = read();
for (int i = 3; i <= n; i ++) B[i] = (x * B[i - 1] % Mod + y * B[i - 2] % Mod + z) % Mod;
for (int i = 1; i <= m; i ++) {
P[i] = read();
ll l = read(), r = read();
for (int j = P[i - 1] + 1, a; i <= P[i]; S[i] = S[i - 1] + a, i ++)
a = B[i] % (r - l + 1) + l;
}
} else for (int i = 1, a; i <= n; S[i] = S[i - 1] + a, i ++) a = read();
int hd = 1, tl = 1;
for (int i = 1; i <= n; i ++) {
while (hd < tl && val(Q[hd + 1]) <= S[i]) hd ++;
G[i] = Q[hd];
while (hd < tl && val(Q[tl]) >= val(i)) tl --;
Q[++ tl] = i;
}
ill ans = 0, tmp = 0;
for (int i = n; i >= 1; i = G[i])
tmp = S[i] - S[G[i]], tmp = tmp * tmp, ans = ans + tmp;
write(ans);
return 0;
}