Submission
Status:
PPPPPPPPPPPPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: KantaponZ
Problemset: ผลบวก (ยาก)
Language: cpp
Time: 0.058 second
Submitted On: 2025-09-25 01:10:56
#include <bits/stdc++.h>
using namespace std;
int N, Q;
int tree[1000001];
int A[1000001];
void upd(int idx, int val) {
for (int i = idx; i <= N; i += (i & -i)) {
tree[i] += (val - A[idx]);
}
A[idx] = val;
}
int query(int idx) {
int sum = 0;
for (int i = idx; i > 0; i -= (i & -i)) {
sum += tree[i];
}
return sum;
}
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> N;
for (int i = 1; i <= N; i++) {
int x;
cin >> x;
upd(i, x);
}
cin >> Q;
while (Q--) {
int T;
cin >> T;
while (T--) {
int x, y;
cin >> x >> y;
x++;
upd(x, y);
}
int x, y; cin >> x >> y;
x++; y++;
cout << query(y) - query(x - 1) << "\n";
}
}
/*
8
4 1 2 3 4 2 5 8
2
1
4 10
3 6
2
2 3
7 4
1 5
*/