Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. void split(pnode t, pnode &l, pnode &r, int64_t k)
  2. {
  3. if (!t)
  4. {
  5. l = 0;
  6. r = 0;
  7. return;
  8. }
  9. int64_t lc = 0;
  10. push(t);
  11. if (t->l) lc = t->l->c;
  12. if (lc < k)
  13. {
  14. split(t->r, t->r, r, k - lc - 1);
  15. l = t;
  16. update(t);
  17. }
  18. else
  19. {
  20. split(t->l, l, t->l, k);
  21. r = t;
  22. update(t);
  23. }
  24. }
  25.  
  26. void merger(pnode &t, pnode l, pnode r)
  27. {
  28. if (!l)
  29. {
  30. t = r;
  31. return;
  32. }
  33. if (!r)
  34. {
  35. t = l;
  36. return;
  37. }
  38. push(r);
  39. push(l);
  40. if (l->prior < r->prior)
  41. {
  42. merger(l->r, l->r, r);
  43. t = l;
  44. update(l);
  45. }
  46. else
  47. {
  48. merger(r->l, l, r->l);
  49. t = r;
  50. update(r);
  51. }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement