Advertisement
TAImatem

Фенвик

Jan 10th, 2023
738
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.45 KB | None | 1 0
  1. vector<int> fenv(n, 0);
  2.  
  3. int getSum(int r)
  4. {
  5.     int sum = 0;
  6.     while (r >= 0)
  7.     {
  8.         sum += fenv[r];
  9.         r = r & (r + 1) - 1;
  10.     }
  11.     return sum;
  12. }
  13.  
  14. int getSum(int l, int r)
  15. {
  16.     return getSum(r) - getSum(l - 1);
  17. }
  18.  
  19. int inc(int i, int a)
  20. {
  21.     while (i < n)
  22.     {
  23.         fenv[i] += a;
  24.         i = i | (i + 1);
  25.     }
  26. }
  27.  
  28. void setFenv(vector<int>& orig)
  29. {
  30.     fenv.clear();
  31.     fenv.resize(orig.size(), 0);
  32.     for (int i = 0; i < orig.size(); i++)
  33.         inc(i, orig[i]);
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement