K_Y_M_bl_C

Untitled

Jan 7th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.70 KB | None | 0 0
  1. pii find_pos(int pos)
  2. {
  3.     int bl = 0;
  4.     for (auto x : q)
  5.     {
  6.         if (pos >= x.size())
  7.             pos -= x.size(), ++bl;
  8.         else
  9.             return mk(bl, pos);
  10.     }
  11. }
  12.  
  13. void add_block_build(int pos)
  14. {
  15.     q.inb(a);
  16.     if (pos)
  17.     {
  18.         ll x = q[pos - 1].back();
  19.         q[pos - 1].pop_back();
  20.         q[pos].inb(x);
  21.     }
  22. }
  23.  
  24. void add_block(int pos)
  25. {
  26.     vll sw;
  27.     int sz = q[pos - 1].size();
  28.     for (int i = sz - 1; i >= sz / 2; --i)
  29.     {
  30.         sw.inb(q[pos - 1].back());
  31.         q[pos - 1].pop_back();
  32.     }
  33.     reverse(all(sw));
  34.     q.insert(q.begin() + pos, sw);
  35. }
  36.  
  37. void add_x(ll x)
  38. {
  39.     q.back().inb(x);
  40.     ANS += x * x;
  41.     if (q.back().size() == LEN)
  42.         add_block_build(q.size());
  43. }
  44.  
  45. void delete_block(int pos)
  46. {
  47.     q.erase(q.begin() + pos);
  48. }
Add Comment
Please, Sign In to add comment