Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- void update(int index, int delta, vector<int>& vc) {
- while (index < vc.size()) {
- vc[index] += delta;
- index = index | (index + 1);
- }
- }
- int sum(int index, vector<int>& vc) {
- int s = 0;
- while (index >= 0) {
- s += vc[index];
- index = (index & (index + 1)) - 1;
- }
- return s;
- }
- int sum(int l, int r, vector<int>& vc) {
- return sum(r, vc) - sum(l - 1, vc);
- }
- int main() {
- int n;
- cin >> n; // size of vector
- vector<int> vc(n, 0);
- int tmp;
- for (int i = 0; i < n; ++i) { // first setup of vector
- cin >> tmp;
- update(i, tmp, vc);
- }
- int c; //count of requests
- cin >> c;
- string stmp;
- int l, r, in, d;
- for (int i = 0; i < c; ++i) {
- cin >> stmp;
- if (stmp == "ADD") {
- cin >> in >> d;
- update(in - 1, d, vc);
- } else if (stmp == "SUM") {
- cin >> l >> r; // l <= r
- cout << sum(l - 1, r - 1, vc) << '\n';
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement