#include <bits/stdc++.h>
using namespace std;
#define mod 998244353
#define maxn 5
#define f first
#define s second
#define ll long long
#define pb(x) push_back(x)
int n, q, k;
int a[maxn];
long long tree[maxn*4];
void bt(int v, int tl, int tr){
if(tl==tr){
tree[v]=a[tl];return;
}
int m=(tl+tr)/2;
bt(v*2, tl, m);
bt(v*2+1, m+1, tr);
tree[v]=tree[v*2]+tree[v*2+1];
}
void u2(int v,int l, int r, int tl, int tr){
if(r<tl||tr<l||tree[v]==0){
return;
}
if(tl==tr){
tree[v]/=k;return;
}
int m=(tl+tr)/2;
u2(v*2,l, r, tl, m);
u2(v*2+1,l,r, m+1, tr);
tree[v]=tree[v*2]+tree[v*2+1];
}
void u1(int v,int l, int r, int tl, int tr){
if(tl==tr){
tree[v]=r;return;
}
int m=(tl+tr)/2;
if(m<l){
u1(v*2+1, l, r, m+1, tr);
}else{
u1(v*2, l, r, tl, m);
}
tree[v]=tree[v*2]+tree[v*2+1];
}
ll res(int v,int l, int r, int tl, int tr){
if(tl>r||tr<l){
return 0;
}else if(tl>=l&&tr<=r){
return tree[v];
}
int m=(tl+tr)/2;
return res(v*2, l, r, tl, m)+ res(v*2+1, l, r, m+1, tr);
}
void solve(){
cin >> n >> q >> k;
for(int i=0; i<n; i++){
cin >> a[i];
}
bt(1, 0, n-1);
int x, l ,r;
for(int i=0; i<q; i++){
cin >> x >> l >> r;
if(x==1){
u1(1, l-1, r, 0, n-1);
}else if(x==2){
u2(1, l-1, r-1, 0, n-1);
}else{
cout << res(1, l-1, r-1, 0, n-1) << "\n";
}
}
}
int main(){
cin.tie(nullptr)->sync_with_stdio(0);
int t=1;
//cin >> t;
while(t--){
solve();
cout << "\n";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |