Submission #1234497

#TimeUsernameProblemLanguageResultExecution timeMemory
1234497PlayVoltzSterilizing Spray (JOI15_sterilizing)C++20
100 / 100
114 ms7064 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int n; vector<int> ft, vect; int ftsum(int index){ int sum = 0; while (index){ sum+=ft[index]; index-= index & (-index); } return sum; } void update(int index, int val){ while (index<=n){ ft[index]+=val; index+=index&(-index); } } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int q, k, a, b, c; cin>>n>>q>>k; vect.resize(n+1, 0); ft.resize(n+1, 0); set<int> s; for (int i=1;i<=n;++i){ cin>>vect[i]; if (vect[i]){ s.insert(i); update(i, vect[i]); } } while (q--){ cin>>a>>b>>c; if (a==1){ update(b, c - vect[b]); s.insert(b); vect[b] = c; } else if (a==2){ if (k==1)continue; for (auto it=s.lower_bound(b); it!=s.end() && (*it)<=c;){ update(*it, vect[*it]/k - vect[*it]); vect[*it]/=k; if (vect[*it]==0){ it = s.erase(it); } else ++it; } } else{ cout<<ftsum(c)-ftsum(b-1)<<"\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...