Cod sursa(job #2669843)

Utilizator NanuGrancea Alexandru Nanu Data 8 noiembrie 2020 10:36:42
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin("datorii.in");
ofstream cout("datorii.out");

#define Ub(x) (x & (-x))
#define NMAX 15001

int aib[NMAX], n, m, tip, a, b;

void add(int pos, int val) {
    for(int i = pos; i <= n; i += Ub(i))
        aib[i] += val;
}

int suma(int pos) {
    int i, s = 0;
    for(i = pos; i >= 1; i -= Ub(i))
        s += aib[i];
    return s;
}

int main() {
    cin >> n >> m;
    for(int i = 1; i <= n; i++) {
        cin >> a;
        add(i, a);
    }

    for(int i = 1; i <= m; i++) {
        cin >> tip >> a >> b;
        if(tip == 0)
            add(a, -b);
        else cout << suma(b) - suma(a - 1) << '\n';
    }

    return 0;
}