Advertisement
hurmawe

Декартовое дерево по неявному ключу 2

Mar 6th, 2021
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. struct node //добавлено ячейка sum
  2. {
  3.     int value_node = NULL;
  4.     int size       = NULL;
  5.     int sum;
  6.     node* left = nullptr;
  7.     node* right = nullptr;
  8.  
  9.     node(int new_value)
  10.     {
  11.         value_node = new_value;
  12.         size = 1;
  13.     }
  14. };
  15.  
  16. typedef pair<node*, node*> Pair;
  17.  
  18. void  update(node* A) // добавлено подсчет ячейки sum
  19. {
  20.     A->size  = 1 + A->left->size + A->right->size;
  21.     A->sum   = A->value_node + A->left->sum + A->right->sum;
  22. }
  23.  
  24. int sum(node* A,const int& left_face,const int& right_face)
  25. {
  26.     Pair left  =  split(A, left_face);
  27.     Pair right = split(left.second, right_face);
  28.  
  29.     int output = right.first->sum;
  30.  
  31.     left.second =merge(right.first, right.second);
  32.     merge(left.first, left.second);
  33.     return output;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement