Advertisement
hurmawe

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

Mar 12th, 2021
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. struct node
  2. {
  3.     uint8_t color     = NULL;
  4.     int value_node    = NULL;
  5.     int size          = NULL;
  6.     int sum           = NULL;
  7.     int average_color = NULL;
  8.     int add           = NULL;
  9.     int add_color     = NULL;
  10.     node* left = nullptr;
  11.     node* right = nullptr;
  12.    
  13.     node(int new_value)
  14.     {
  15.         value_node = new_value;
  16.         size = 1;
  17.     }
  18.     node(uint8_t new_color)
  19.     {
  20.         color = new_color;
  21.         average_color = color;
  22.     }
  23. };
  24.  
  25.  
  26.  
  27. void  update(node* A)
  28. {
  29.     A->size  = 1 + A->left->size + A->right->size;
  30.     A->sum   = A->value_node + A->left->sum + A->right->sum;
  31.     A->average_color = (A->color + A->left->average_color + A->right->average_color) / 3;
  32. }
  33.  
  34. int average_color(node * A, int left_face, int right_face)
  35. {
  36.     push_down(A);
  37.     color_push_down(A);
  38.     Pair left = split(A, left_face);
  39.     Pair right = split(left.second, right_face);
  40.  
  41.     int output = right.first->average_color;
  42.  
  43.     left.second = merge(right.first, right.second);
  44.     merge(left.first, left.second);
  45.     return output;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement