Submission #828785

#TimeUsernameProblemLanguageResultExecution timeMemory
828785OAleksaSterilizing Spray (JOI15_sterilizing)C++14
100 / 100
196 ms7116 KiB
#include <bits/stdc++.h> #define f first #define s second using namespace std; #define int long long const int maxn = 1e5 + 69; int st[4 * maxn], mx[4 * maxn], n, q, k; void upd(int v, int tl, int tr, int x, int y) { if(tl == tr) st[v] = mx[v] = y; else { int mid = (tl + tr) / 2; if(x <= mid) upd(v * 2, tl, mid, x, y); else upd(v * 2 + 1, mid + 1, tr, x, y); st[v] = st[v * 2] + st[v * 2 + 1]; mx[v] = max(mx[v * 2], mx[v * 2 + 1]); } } void sprejamVamPoKevama(int v, int tl, int tr, int l, int r) { if(tl > r || tr < l) return; else if(tl >= l && tr <= r) { if(mx[v] > 0) { if(tl == tr) st[v] /= k, mx[v] /= k; else { int mid = (tl + tr) / 2; sprejamVamPoKevama(v * 2, tl, mid, l, r); sprejamVamPoKevama(v * 2 + 1, mid + 1, tr, l, r); st[v] = st[v * 2] + st[v * 2 + 1]; mx[v] = max(mx[v * 2], mx[v * 2 + 1]); } } return; } int mid = (tl + tr) / 2; sprejamVamPoKevama(v * 2, tl, mid, l, r); sprejamVamPoKevama(v * 2 + 1, mid + 1, tr, l, r); st[v] = st[v * 2] + st[v * 2 + 1]; mx[v] = max(mx[v * 2], mx[v * 2 + 1]); } int brojimKeve(int v, int tl, int tr, int l, int r) { if(tl > r || tr < l) return 0; //no bitches else if(tl >= l && tr <= r) return st[v]; else { int mid = (tl + tr) / 2; return brojimKeve(v * 2, tl, mid, l, r) + brojimKeve(v * 2 + 1, mid + 1, tr, l, r); } } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while(tt--) { cin >> n >> q >> k; for(int i = 1;i <= n;i++) { int x; cin >> x; upd(1, 1, n, i, x); } for(int i = 1;i <= q;i++) { int t, a, b; cin >> t >> a >> b; if(t == 1) upd(1, 1, n, a, b); else if(t == 2 && k != 1) sprejamVamPoKevama(1, 1, n, a, b); else if(t == 3) cout << brojimKeve(1, 1, n, a, b) << "\n"; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...