제출 #1291864

#제출 시각아이디문제언어결과실행 시간메모리
1291864Jawad_Akbar_JJSterilizing Spray (JOI15_sterilizing)C++20
0 / 100
5092 ms2112 KiB
#include <iostream> using namespace std; const int N = (1<<17) + 1; int sum[N<<1], k; void insert(int i, int vl, int cur = 1, int st = 1, int en = N){ if (en - st == 1){ sum[cur] = vl; return; } int lc = cur<<1, rc = lc + 1, mid = (st + en)>>1; if (i < mid) insert(i, vl, lc, st, mid); else insert(i, vl, rc, mid, en); sum[cur] = sum[lc] + sum[rc]; } void oper(int l, int r, int cur = 1, int st = 1, int en = N){ if (l >= en or r <= st or sum[cur] == 0) return; if (en - st == 1){ sum[cur] /= k; return; } int lc = cur<<1, rc = lc + 1, mid = (st + en)>>1; oper(l, r, lc, st, mid); oper(l, r, rc, mid, en); sum[cur] = sum[lc] + sum[rc]; } int get(int l, int r, int cur = 1, int st = 1, int en = N){ if (l >= en or r <= st) return 0; if (l <= st and r >= en) return sum[cur]; int lc = cur<<1, rc = lc + 1, mid = (st + en)>>1; return get(l, r, lc, st, mid) + get(l, r, rc, mid, en); } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, q; cin>>n>>q>>k; for (int i=1, a;i<=n;i++){ cin>>a; insert(i, a); } for (int i=1;i<=q;i++){ int t, l, r; cin>>t>>l>>r; if (t == 1) insert(l, r); else if (t == 2) oper(l, r + 1); else cout<<get(l, r+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...