Advertisement
kalabukdima

Treap template

Mar 7th, 2024
393
0
106 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include <vector>
  2.  
  3. using index = int;
  4.  
  5. struct Node {
  6.     int value;
  7.     int l = -1;
  8.     int r = -1;
  9.     int size = 0;
  10.     bool reversed = false;
  11. };
  12.  
  13. static std::vector<Node> mem;
  14.  
  15. int new_node(int value) {
  16.     mem.push_back(Node{.value = value});
  17.     return mem.size() - 1;
  18. }
  19.  
  20. // Push delayed operations
  21. void push_down(index node_i) {
  22.     if (mem[node_i].reversed) {
  23.         // ...
  24.     }
  25. }
  26.  
  27. // Recalculate subtree stats, e.g. size
  28. void update(index node_i) {
  29.     mem[node_i].size = // ...
  30. }
  31.  
  32. std::pair<index, index> split(index node_i, int left_size) {
  33.     push_down(node_i);
  34.     // ...
  35.     update(node_i);
  36. }
  37.  
  38. index merge(index left, index right) {
  39.     // ...
  40.     update(result);
  41. }
  42.  
  43. int main() {
  44.     return 0;
  45. }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement