Submission
Status:
PPPPPPPPPPPPPPPPPPPP
Score: 100
User: mydKN
Problemset: ผลบวก (ยาก)
Language: cpp
Time: 0.080 second
Submitted On: 2025-04-19 02:00:16
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
int n, q;
int arr[maxn];
int t[4 * maxn];
void build(int idx, int tl, int tr){
if(tl == tr) t[idx] = arr[tl];
else{
int tm = (tl + tr) >> 1;
build(idx*2, tl, tm);
build(idx*2+1, tm+1, tr);
t[idx] = t[idx*2] + t[idx*2+1];
}
}
int qr(int idx, int tl, int tr, int l, int r){
if(tl > r || tr < l) return 0;
if(tl >= l && tr <= r) return t[idx];
int tm = (tl + tr) >> 1;
return qr(idx*2, tl, tm, l, r) + qr(idx*2+1, tm+1, tr, l, r);
}
void update(int idx, int tl, int tr, int pos, int val){
if(tl == tr){
t[idx] = val;
arr[pos] = val;
}
else{
int tm = (tl + tr) >> 1;
if(pos > tm) update(idx*2+1, tm+1, tr, pos, val);
else update(idx*2, tl, tm, pos, val);
t[idx] = t[idx*2] + t[idx*2+1];
}
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
cin >> n;
for(int i=1;i<=n;++i){
cin >> arr[i];
}
build(1, 1, n);
cin >> q;
while(q--){
int t;
cin >> t;
while(t--){
int x, val;
cin >> x >> val;
++x;
update(1, 1, n, x, val);
}
int x, y;
cin >> x >> y;
cout << qr(1, 1, n, x+1, y+1) << "\n";
}
}