Cod sursa(job #3037109)

Utilizator SmauSmau George Robert Smau Data 25 martie 2023 13:02:55
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

#define NMAX 15008
#define LSB(i) i & (-i)

using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int n, m, BIT[NMAX];

void Update(int pos, int value) {
    for(int i = pos; i <= n; i += LSB(i))
        BIT[i] += value;
}

int Query(int pos) {
    int ans = 0;
    for(int i = pos; i > 0; i -= LSB(i))
        ans += BIT[i];
    return ans;
}

int main() {
    fin >> n >> m;
    for(int i = 1; i <= n; i ++) {
        int x; fin >> x;
        Update(i, x);
    }

    for(int i = 1; i <= m; i ++) {
        int task, a, b;
        fin >> task >> a >> b;
        if(task) {
            fout << Query(b) - Query(a - 1) << '\n';
            continue;
        }

        Update(a, -b);
    }

    return 0;
}