Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void split(pnode t, pnode &l, pnode &r, int64_t k)
- {
- if (!t)
- {
- l = 0;
- r = 0;
- return;
- }
- int64_t lc = 0;
- push(t);
- if (t->l) lc = t->l->c;
- if (lc < k)
- {
- split(t->r, t->r, r, k - lc - 1);
- l = t;
- update(t);
- }
- else
- {
- split(t->l, l, t->l, k);
- r = t;
- update(t);
- }
- }
- void merger(pnode &t, pnode l, pnode r)
- {
- if (!l)
- {
- t = r;
- return;
- }
- if (!r)
- {
- t = l;
- return;
- }
- push(r);
- push(l);
- if (l->prior < r->prior)
- {
- merger(l->r, l->r, r);
- t = l;
- update(l);
- }
- else
- {
- merger(r->l, l, r->l);
- t = r;
- update(r);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement