Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct node{
- node *l, *r;
- int v = 0;
- node(): l(nullptr), r(nullptr) {}
- node(node *l, node *r): l(l), r(r) {pull();}
- void pull() {if(l) v = max(l->v, r->v);}
- };
- node *build(int l,int r) {
- int mid = l+r >> 1;
- if(l+1 == r) return new node;
- return new node(build(l, mid), build(mid, r));
- }
- void add(node *a, int l, int r, int pos, int v) {
- int mid = l+r >> 1;
- if(l+1 == r) a->v += v;
- else if(m <= pos) add(a->r, m, r, pos, v);
- else add(a->l, l, m, pos, v);
- a->pull();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement