Advertisement
Jasir

BIT with BS

Jun 17th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.65 KB | None | 0 0
  1. #define mx 2097152
  2. #define mx2 1429500
  3. #define inf 1000000000000000000
  4. #define int long long
  5.  
  6. int tree[mx+5];
  7. int ara[mx];
  8.  
  9. int read(int idx){
  10.     int sum = 0;
  11.     while(idx>0){
  12.         sum += tree[idx];
  13.         idx -= (idx&-idx);
  14.     }
  15.     return sum;
  16. }
  17.  
  18. void update(int idx, int val){
  19.     while(idx<=mx){
  20.         tree[idx] += val;
  21.         idx += (idx&-idx);
  22.     }
  23. }
  24.  
  25. int bsonbit(int val){
  26.     int idx = 0, d = mx, tidx;
  27.     val--;
  28.     while(d>0 && idx<=mx){
  29.         tidx = idx + d;
  30.         if(tidx<=mx&&tree[tidx]<=val){
  31.             idx = tidx;
  32.             val -= tree[tidx];
  33.         }
  34.         d >>= 1;
  35.     }
  36.     return idx + 1;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement