Advertisement
Guest User

Untitled

a guest
Nov 1st, 2014
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. class Fenwick_Tree_Sum
  2. {
  3.     vector<int> tree;
  4.     Fenwick_Tree_Sum(const vector<int>& Arg)//Arg is our array on which we are going to work
  5.     {
  6.         tree.resize(Arg.size());
  7.  
  8.         for(int i = 0 ; i<tree.size(); i++)
  9.             increase(i, Arg[i]);
  10.  
  11.     }
  12.  
  13.     // Increases value of i-th element by ''delta''.
  14.     void increase(int i, int delta)
  15.     {
  16.         for (; i < (int)tree.size(); i |= i + 1)
  17.             tree[i] += delta;
  18.     }
  19.  
  20.     // Returns sum of elements with indexes left..right, inclusive; (zero-based);
  21.     int getsum(int left, int right)
  22.     {
  23.         return sum(right) - sum(left-1); //when left equals 0 the function hopefully returns 0
  24.     }
  25.  
  26.     int sum(int ind)
  27.     {
  28.         int sum = 0;
  29.         while (ind>=0)
  30.         {
  31.             sum += tree[ind];
  32.             ind &= ind + 1;
  33.             ind--;
  34.         }
  35.         return sum;
  36.     }
  37. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement