真的给我写无语了。
请把
rep (i, 1, m) {
int id = t[i].id;
if (l > t[i].l) v[r].pb(node{t[i].l, l - 1, id, 1}), ans[id] -= pr1[l - 1] - pr1[t[i].l - 1];
if (r < t[i].r) v[l - 1].pb(node{r + 1, t[i].r, -id, 0}), ans[id] += pr2[t[i].r] - pr2[r];
if (l < t[i].l) v[r].pb(node{l, t[i].l - 1, -id, 1}), ans[id] += pr1[t[i].l - 1] - pr1[l - 1];
if (r > t[i].r) v[l - 1].pb(node{t[i].r + 1, r, id, 0}), ans[id] -= pr2[r] - pr2[t[i].r];
l = t[i].l, r = t[i].r;
}
改为:
rep (i, 1, m) {
int id = t[i].id;
if (l > t[i].l) v[r].pb(node{t[i].l, l - 1, id, 1}), ans[id] -= pr1[l - 1] - pr1[t[i].l - 1], l = t[i].l;
if (r < t[i].r) v[l - 1].pb(node{r + 1, t[i].r, -id, 0}), ans[id] += pr2[t[i].r] - pr2[r], r = t[i].r;
if (l < t[i].l) v[r].pb(node{l, t[i].l - 1, -id, 1}), ans[id] += pr1[t[i].l - 1] - pr1[l - 1], l = t[i].l;
if (r > t[i].r) v[l - 1].pb(node{t[i].r + 1, r, id, 0}), ans[id] -= pr2[r] - pr2[t[i].r], r = t[i].r;
}