bhupixb

BIT or Fenwick tree

Jul 4th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. // Bhupendra Yadav
  2. #include <bits/stdc++.h>
  3. #include <ext/pb_ds/assoc_container.hpp>
  4. //#include < ext/pb_ds/tree_policy.hpp>
  5. using namespace __gnu_pbds;
  6. using namespace std;
  7. typedef tree<pair < int, int >, null_type, less<pair < int, int >>, rb_tree_tag, tree_order_statistics_node_update> bhupixb;
  8. const int N = 1001231;
  9. typedef long long int ll;
  10. ll bit[N];
  11. // Remember the array is 0 indexd
  12. #define f(i,a,n) for(int i = a; i < n ; i++)
  13. ll ret_sum(int i,int n){
  14. ll sum(0);
  15. while(i > 0){ // i > 0
  16. sum += bit[i];
  17. i -= (i & (-i));
  18. }
  19. return sum;
  20. }
  21. void update(int i, int num, int n){
  22. while(i <= n){ // i <= n Remember
  23. bit[i] += num;
  24. i += (i&(-i));
  25. }
  26. }
  27. int main(){
  28. int n, k, i;long int num;
  29. cin >> n;
  30. //VL v(n+1), arr(n+1, 0};
  31. f(i,0,n)cin >> num, update(i+1, num, n);
  32. cin >> k;
  33. while(k--){
  34. char ch; int l, r, val;
  35. cin >> ch;
  36. if(ch == 'q'){
  37. cin >> l >> r;
  38. cout << ret_sum(r, n) - ret_sum(max(0,l-1), n) << '\n';
  39. }
  40. else{
  41. cin >> i >> val;
  42. update(i, val, n);
  43. }
  44. }
  45.  
  46.  
  47. return 0;
  48. }
Add Comment
Please, Sign In to add comment