在评测P3373的如下代码时,评测机CE并给出以下报错信息: Nothing is compiled: OUTPUT exceeds.
#include <bits/stdc++.h>
using namespace std;
#define LL long long
constexpr int N = 1e6 + 10, mod = 571373;
int n, m, moo;
struct SegmentTree {
int size = 1;
LL sum = 0, lazyadd = 0, lazymul = 1;
void receive(LL addval, LL mulval) {
if (mulval) {
sum *= mulval;
lazyadd *= mulval;
lazymul *= mulval;
sum %= mod, lazyadd %= mod, lazymul %= mod;
}
if (addval) {
sum += addval * size;
lazyadd += addval;
sum %= mod, lazyadd %= mod;
}
}
} Segt[N];
array<LL, N> a;
void push_up(const int u) {
Segt[u].sum = Segt[u << 1].sum + Segt[u << 1 | 1].sum;
Segt[u].sum %= mod;
}
void push_down(const int u) {
Segt[u << 1].receive(Segt[u].lazyadd, Segt[u].lazymul);
Segt[u << 1 | 1].receive(Segt[u].lazyadd, Segt[u].lazymul);
Segt[u].lazyadd = 0, Segt[u].lazymul = 1;
}
void build_SegmentTree(const int u, const int l, const int r) {
if (l == r) {
Segt[u].sum = a[l];
return;
}
Segt[u].size = r - l + 1;
const int mid = (l + r) >> 1;
build_SegmentTree(u << 1, l, mid);
build_SegmentTree(u << 1 | 1, mid + 1, r);
push_up(u);
}
void change_SegmentTree(const int u, const int L, const int R, const int l, const int r, const LL add, const LL mul) {
if (L > R || l > R || r < L) return;
if (L == l && R == r) {
Segt[u].receive(add, mul);
return;
}
push_down(u);
const int mid = (l + r) >> 1;
change_SegmentTree(u << 1, L, min(R, mid), l, mid, add, mul);
change_SegmentTree(u << 1 | 1, max(L, mid + 1), R, mid + 1, r, add, mul);
push_up(u);
}
LL query_SegmentTree(const int u, const int L, const int R, const int l, const int r) {
if (L > R || l > R || r < L) return 0;
if (L == l && R == r) {
return Segt[u].sum;
}
push_down(u);
const int mid = (l + r) >> 1;
return query_SegmentTree(u << 1, L, min(mid, R), l, mid) + query_SegmentTree(u << 1 | 1, max(mid + 1, L), R, mid + 1, r);
}
int main() {
cin >> n >> m >> moo;
for (int i = 1; i <= n; i++) cin >> a[i];
build_SegmentTree(1, 1, n);
for (int id, x, y; m; m--) {
cin >> id >> x >> y;
LL k;
if (id == 1) {
cin >> k;
change_SegmentTree(1, x, y, 1, n, 0, k);
} else if (id == 2) {
cin >> k;
change_SegmentTree(1, x, y, 1, n, k, 0);
} else {
cout << query_SegmentTree(1, x, y, 1, n) % mod <<"\n";
}
}
return 0;
}
本代码在本地的两个环境下都可以正常编译并运行。所以认为是评测机故障。
特此报告。