➤ Problem Link : COURAGE
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int #define mp make_pair #define mx pow(10,9)+1 pair<ll,ll> st[400002]; ll arr[200001]; void build(ll v, ll s, ll e) { if(s==e) { st[v]=mp(arr[s],arr[s]); return; } ll mid=(s+e)/2; build(2*v,s,mid); build(2*v+1,mid+1,e); st[v]=mp(min(st[2*v].first,st[2*v+1].first),st[2*v].second+st[2*v+1].second); } void update(ll v, ll s, ll e, ll ind, ll x) { if(s==e) { st[v].second+=x; st[v].first+=x; return; } ll mid=(s+e)/2; if(ind>=s && ind<=mid) update(2*v,s,mid,ind,x); else update(2*v+1,mid+1,e,ind,x); st[v]=mp(min(st[2*v].first,st[2*v+1].first),st[2*v].second+st[2*v+1].second); } pair<ll,ll> query(ll v, ll s, ll e, ll l, ll r) { if(s>r || e< l) return mp(mx,0); if(s>=l && e<=r) return st[v]; ll mid=(s+e)/2; pair<ll,ll> p = query(2*v,s,mid,l,r); pair<ll,ll> q= query(2*v+1,mid+1,e,l,r); return mp(min(p.first,q.first),p.second+q.second); } int main() { ll p,n; cin>>n; for(ll i=0;i<n;i++) cin>>arr[i]; cin>>p; build(1,0,n-1); string s; ll x,y; while(p--) { cin>>s>>x>>y; if(s=="COUNT") { pair<ll,ll> p=query(1,0,n-1,x,y); cout<<p.second-p.first<<"\n"; } else if(s=="GROW") update(1,0,n-1,y,x); else update(1,0,n-1,y,x*-1); } }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!