LazySegmentTree
const int N = 1e5 + 10;
struct Node {
int l, r;
} tr[N * 4];
void pushup(int u) {
}
void updateLazy(int u, int x) {
}
void pushdown(int u) {
if (tr[u].lazy) {
updateLazy(u << 1, tr[u].lazy);
updateLazy(u << 1 | 1, tr[u].lazy);
tr[u].lazy = 0;
}
}
void build(int u, int l, int r) {
tr[u] = {l, r};
if (l == r) {
return;
}
int mid = l + r >> 1;
build(u << 1, l, mid), build(u << 1 | 1, mid + 1, r);
pushup(u);
}
int query(int u, int l, int r) {
if (tr[u].l >= l && tr[u].r <= r) {
}
pushdown(u);
int mid = tr[u].l + tr[u].r >> 1;
int res = 0;
if (l <= mid) res += query(u << 1, l, r);
if (r > mid) res += query(u << 1 | 1, l, r);
return res;
}
void modify(int u, int l, int r, int x) {
if (tr[u].l >= l && tr[u].r <= r) {
updateLazy(u, x);
return;
}
pushdown(u);
int mid = tr[u].l + tr[u].r >> 1;
if (l <= mid) modify(u << 1, l, r, x);
if (r > mid) modify(u << 1 | 1, l, r, x);
pushup(u);
}