Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- #define t_case ll test;cin>>test;while(test--)
- #define left(nod) 2*nod
- #define right(nod) 2*nod+1
- #define ss second
- #define ff first
- #define pb push_back
- #define pll pair<ll,ll>
- #define FAST ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
- #define deb(a) cout<<#a<<": "<<a;cout<<endl;
- #define deba(a...) cout<<endl;cout<<#a<<": ";for(auto it:a)cout<<it<<" ";cout<<endl;
- struct fenwick_tree
- {
- vector <ll> bit;
- ll n;
- fenwick_tree(ll size)
- {
- n=size;
- bit.assign(n,0);
- }
- ll sum(ll l)
- {
- ll r=0;
- while(l>=0)
- {
- r+=bit[l];
- l=(l&(l+1))-1;
- }
- return r;
- }
- void inc(ll i,ll del)// increse by del
- {
- while(i<=n)
- {
- bit[i]+=del;
- i=i|(i+1);
- }
- }
- ll sum(ll l,ll r)
- {
- return sum(r)-sum(l-1);
- }
- };
- int main()
- {
- FAST;//not faster than scanf printf
- ll t;cin>>t;
- for(ll tc=1;tc<=t;tc++)
- {
- cout<<"Case #"<<tc<<": ";
- ll n,q;cin>>n>>q;ll a[200009];
- for(ll i=1;i<=n;i++)cin>>a[i];
- fenwick_tree b1(n+9), b2(n+9);// here memory is allocated inside a funtion during runtime
- for(ll i=1;i<=n;i++)
- {
- ll p;
- if(i%2==1)p=-1;else p=1;
- b1.inc(i, a[i]*i*p);
- b2.inc(i, a[i]*p);
- }
- ll ans=0;
- while(q--)
- {
- char ch;cin>>ch;
- if(ch=='U')
- {
- ll x,v;cin>>x>>v;ll p=1;if(x%2==1)p=-1;
- ll del=p*v*x - p*a[x]*x;
- b1.inc(x,del);
- del=p*v - p*a[x];
- b2.inc(x,del);
- a[x]=v;
- }
- else
- {
- ll l,r;cin>>l>>r;
- ll te=b1.sum(l,r)+b2.sum(l,r)*(-l)+b2.sum(l,r);
- if(l%2==1)te=-te;
- ans+=te;
- }
- }
- cout<<ans<<endl;
- }
- }
Add Comment
Please, Sign In to add comment