Submission #1101032

#TimeUsernameProblemLanguageResultExecution timeMemory
1101032tsengangSterilizing Spray (JOI15_sterilizing)C++17
15 / 100
150 ms4792 KiB
#include <bits/stdc++.h> #define ll long long #define ff first #define ss second #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() using namespace std; struct segtree{ int n; vector<ll>d; segtree(ll n){ d.resize(4*n); build(1,1,n); } void build(ll v,ll l,ll r){ if(l==r){ d[v]=0; return; } ll m=(l+r)/2; build(v*2,l,m); build(v*2+1,m+1,r); d[v]=d[v*2]+d[v*2+1]; } ll query(ll v,ll l,ll r,ll L,ll R){ if(L>R||l>R||L>r) return 0; if(L<=l&&r<=R){ return d[v]; } ll m=(l+r)/2; return query(v*2,l,m,L,R)+query(v*2+1,m+1,r,L,R); } void update(ll v,ll l,ll r,ll pos,ll val){ if(pos<l||r<pos) return; if(l==r){ d[v]=val; return; } ll m=(l+r)/2; update(v*2,l,m,pos,val); update(v*2+1,m+1,r,pos,val); d[v]=d[v*2]+d[v*2+1]; } }; int main() { ll n,q,k; cin >> n >> q >> k; ll a[n+2]; for(ll i = 1; i <= n; i++){ cin >> a[i]; } if(n <= 3000 && q <= 3000){ while(q--){ ll s,x,y; cin >> s >> x >> y; if(s == 1){ a[x] = y; } if(s == 2){ for(ll i = x; i <= y; i++)a[i] /= k; } if(s == 3){ ll sum = 0; for(ll i = x; i <= y; i++){ sum+=a[i]; } cout << sum << '\n'; } } return 0; } if(k == 1){ segtree gang(n); for(ll i = 1 ; i <= n; i++){ gang.update(1,1,n,i,a[i]); } while(q--){ ll s,x,y; cin >> s >> x >> y; if(s == 1){ gang.update(1,1,n,x,y); } if(s == 3){ cout << gang.query(1,1,n,x,y) << '\n'; } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...