Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cmath>
- #include <cstring>
- #include <cstdlib>
- #include <iostream>
- #include <cmath>
- #include <algorithm>
- #include <list>
- #include <stack>
- #include <utility>
- #include <set>
- #include <ctime>
- #include <string>
- #include <map>
- #include <vector>
- #include <queue>
- #include <cctype>
- using namespace std;
- //#define f first
- //#define int long long
- #define N 100005
- int bit[N];
- int v[N];
- int n,m;
- void upd(int idx, int val)
- {
- while(idx <=n)
- {
- bit[idx]+=val;
- idx += (idx & -idx);
- }
- }
- int qry(int idx)
- {
- int sm = 0;
- while(idx>0)
- {
- sm+=bit[idx];
- idx -= (idx & -idx);
- }
- return sm;
- }
- void solve()
- {
- int q;
- scanf("%d %d", &n, &q);
- for(int i=1;i<=n;i++)
- {
- scanf("%d", &v[i]);
- upd(i, v[i]);
- }
- while(q--)
- {
- int ty;
- scanf("%d", &ty);
- int l,r, val;
- if(ty == 1)
- {
- scanf("%d", &l);l++;
- cout<<v[l]<<"\n";
- upd(l, -v[l]);
- v[l]=0;
- }
- if(ty == 2)
- {
- scanf("%d %d", &l, &val);
- l++;
- v[l]+=val;
- upd(l, val);
- }
- if(ty == 3)
- {
- scanf("%d %d",&l,&r);
- l++;r++;
- int ans = qry(r) - qry(l-1);
- printf("%d\n", ans);
- }
- }
- }
- int32_t main()
- {
- //ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
- int test =1;
- scanf("%d", &test);
- //cin >> test;
- int tc=1;
- while(test--)
- {
- printf("Case %d:\n", tc);tc++;
- solve();
- memset(bit, 0, sizeof bit);
- }
- }
Add Comment
Please, Sign In to add comment