knakul853

Untitled

Apr 22nd, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cmath>
  3. #include <cstring>
  4. #include <cstdlib>
  5. #include <iostream>
  6. #include <cmath>
  7. #include <algorithm>
  8. #include <list>
  9. #include <stack>
  10. #include <utility>
  11. #include <set>
  12. #include <ctime>
  13. #include <string>
  14. #include <map>
  15. #include <vector>
  16. #include <queue>
  17. #include <cctype>
  18. using namespace std;
  19. //#define f first
  20. //#define int long long
  21. #define  N 100005
  22. int bit[N];
  23. int v[N];
  24. int n,m;
  25.  
  26. void upd(int idx, int val)
  27. {
  28.   while(idx <=n)
  29.   {
  30.     bit[idx]+=val;
  31.     idx += (idx & -idx);
  32.  
  33.   }
  34. }
  35.  
  36. int qry(int idx)
  37. {
  38.   int sm = 0;
  39.   while(idx>0)
  40.   {
  41.     sm+=bit[idx];
  42.     idx -= (idx & -idx);
  43.   }
  44.   return sm;
  45. }
  46.  
  47.   void solve()
  48.  {
  49.    int q;
  50.     scanf("%d %d", &n, &q);
  51.     for(int i=1;i<=n;i++)
  52.     {
  53.       scanf("%d", &v[i]);
  54.       upd(i, v[i]);
  55.     }
  56.    
  57.  
  58.     while(q--)
  59.     {
  60.       int ty;
  61.       scanf("%d", &ty);
  62.       int l,r, val;
  63.       if(ty == 1)
  64.       {
  65.           scanf("%d", &l);l++;
  66.        cout<<v[l]<<"\n";
  67.         upd(l, -v[l]);
  68.         v[l]=0;
  69.       }
  70.       if(ty == 2)
  71.       {
  72.         scanf("%d %d", &l, &val);
  73.  
  74.         l++;
  75.         v[l]+=val;
  76.         upd(l, val);
  77.        
  78.       }
  79.       if(ty == 3)
  80.       {
  81.         scanf("%d %d",&l,&r);
  82.         l++;r++;
  83.         int ans = qry(r) - qry(l-1);
  84.         printf("%d\n", ans);
  85.       }
  86.     }
  87.  
  88.      
  89.  }
  90.        
  91.    int32_t main()
  92.    {
  93.      //ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
  94.      int test =1;
  95.      scanf("%d", &test);
  96.      //cin >> test;
  97.      int tc=1;
  98.      while(test--)
  99.      {
  100.         printf("Case %d:\n", tc);tc++;
  101.         solve();
  102.         memset(bit, 0, sizeof bit);
  103.      }    
  104.      
  105.     }
Add Comment
Please, Sign In to add comment