Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int maxn = 1 << 17;
- struct node {
- int sum = 0;
- int mod = 0; // modificator
- static node combine(node a, node b) {
- node c;
- // c = merge(a, b)
- return c;
- }
- } tree[2 * maxn - 1];
- void pull(int x, int l, int r) {
- // push node
- }
- void edit(int x, int l, int r, int ind, int val) {
- if (r < ind || ind < l)
- return;
- if (l == r) {
- // edit node..
- return;
- }
- int mid = (l + r) >> 1;
- pull(x, l, r);
- edit(2 * x + 1, l, mid, ind, val);
- edit(2 * x + 2, mid + 1, r, ind, val);
- }
- int get(int x, int l, int r, int ll, int rr) {
- if (r < ll || rr < l)
- return {};
- if (ll <= l && r <= rr)
- return tree[x].sum;
- int mid = (l + r) >> 1;
- pull(x, l, r);
- return get(2 * x + 1, l, mid, ll, rr) + get(2 * x + 2, mid + 1, r, ll, rr);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement