#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int k;
const int N = 100005;
ll st[4*N][2];
ll a[N];
void Build(int node, int l, int r){
if(l>r)return;
if(l==r){
st[node][0]=a[l]; st[node][1]=a[l];
return;
}
int mid=(l+r)/2;
Build(2*node+1, l, mid);
Build(2*node+2, mid+1, r);
st[node][0]=st[2*node+1][0]+st[2*node+2][0];
st[node][1]=max(st[2*node+1][1], st[2*node+2][1]);
}
void Update(int node, int l, int r, int ind, int val){
if(l>r || l >ind || r<ind)return;
if(l==r){
st[node][0]=val;
st[node][1]=val;
return;
}
int mid=(l+r)/2;
Update(2*node+1, l, mid, ind, val);
Update(2*node+2, mid+1, r, ind, val);
st[node][0]=st[2*node+1][0]+st[2*node+2][0];
st[node][1]=max(st[2*node+1][1], st[2*node+2][1]);
}
ll Get(int node, int l, int r, int L, int R){
if(l>r || l>R || r<L)return 0;
if(L<=l && R>=r)return st[node][0];
int mid=(l+r)/2;
return Get(2*node+1, l, mid, L, R)+Get(2*node+2, mid+1, r, L, R);
}
void Spray(int node, int l, int r, int L, int R){
if(l>r || l>R || r<L)return;
if(L<=l && R>=r){
if(l==r){
st[node][0]/=k;
st[node][1]/=k;
return;
}
if(st[node][1]>0){
int mid=(l+r)/2;
Spray(2*node+1, l, mid, L, R);
Spray(2*node+2, mid+1, r, L, R);
st[node][0]=st[2*node+1][0]+st[2*node+2][0];
st[node][1]=max(st[2*node+1][1], st[2*node+2][1]);
}
return;
}
int mid = (l+r)/2;
Spray(2*node+1, l, mid, L, R);
Spray(2*node+2, mid+1, r, L, R);
st[node][0]=st[2*node+1][0]+st[2*node+2][0];
st[node][1]=max(st[2*node+1][1], st[2*node+2][1]);
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
int n, q;
cin >> n >> q >> k;
for(int i=0; i< n; i++)cin >> a[i];
Build(0, 0, n-1);
while(q--){
int t;
cin >> t;
if(t==1){
int ind, val;
cin >> ind >> val;
Update(0, 0, n-1, ind-1, val);
}
if(t==2){
int l, r;
cin >> l >> r;
if(k!=1){
Spray(0, 0, n-1, l-1, r-1);
}
}
if(t==3){
int l, r;
cin >> l >> r;
cout << Get(0, 0, n-1, l-1, r-1) << '\n';
}
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
3 ms |
468 KB |
Output is correct |
5 |
Correct |
4 ms |
556 KB |
Output is correct |
6 |
Correct |
3 ms |
468 KB |
Output is correct |
7 |
Correct |
4 ms |
556 KB |
Output is correct |
8 |
Correct |
3 ms |
468 KB |
Output is correct |
9 |
Correct |
4 ms |
468 KB |
Output is correct |
10 |
Correct |
5 ms |
464 KB |
Output is correct |
11 |
Correct |
3 ms |
468 KB |
Output is correct |
12 |
Correct |
3 ms |
468 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
37 ms |
5040 KB |
Output is correct |
2 |
Correct |
33 ms |
4608 KB |
Output is correct |
3 |
Correct |
33 ms |
6964 KB |
Output is correct |
4 |
Correct |
39 ms |
7680 KB |
Output is correct |
5 |
Correct |
65 ms |
8036 KB |
Output is correct |
6 |
Correct |
49 ms |
8128 KB |
Output is correct |
7 |
Correct |
45 ms |
8012 KB |
Output is correct |
8 |
Correct |
45 ms |
8112 KB |
Output is correct |
9 |
Correct |
42 ms |
7916 KB |
Output is correct |
10 |
Correct |
45 ms |
7892 KB |
Output is correct |
11 |
Correct |
41 ms |
7884 KB |
Output is correct |
12 |
Correct |
41 ms |
7928 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
1108 KB |
Output is correct |
2 |
Correct |
11 ms |
2900 KB |
Output is correct |
3 |
Correct |
20 ms |
3156 KB |
Output is correct |
4 |
Correct |
43 ms |
2716 KB |
Output is correct |
5 |
Correct |
54 ms |
6640 KB |
Output is correct |
6 |
Correct |
58 ms |
6636 KB |
Output is correct |
7 |
Correct |
39 ms |
6732 KB |
Output is correct |
8 |
Correct |
54 ms |
6612 KB |
Output is correct |
9 |
Correct |
54 ms |
6536 KB |
Output is correct |
10 |
Correct |
58 ms |
6632 KB |
Output is correct |
11 |
Correct |
51 ms |
6536 KB |
Output is correct |
12 |
Correct |
52 ms |
6512 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
75 ms |
4552 KB |
Output is correct |
2 |
Correct |
80 ms |
4628 KB |
Output is correct |
3 |
Correct |
95 ms |
4004 KB |
Output is correct |
4 |
Correct |
120 ms |
3680 KB |
Output is correct |
5 |
Correct |
116 ms |
7920 KB |
Output is correct |
6 |
Correct |
132 ms |
7848 KB |
Output is correct |
7 |
Correct |
112 ms |
7920 KB |
Output is correct |
8 |
Correct |
171 ms |
7964 KB |
Output is correct |
9 |
Correct |
141 ms |
7756 KB |
Output is correct |
10 |
Correct |
162 ms |
7800 KB |
Output is correct |
11 |
Correct |
121 ms |
7800 KB |
Output is correct |
12 |
Correct |
221 ms |
7784 KB |
Output is correct |