Cod sursa(job #2461919)

Utilizator AndreiVisoiuAndrei Visoiu AndreiVisoiu Data 26 septembrie 2019 15:45:15
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 15000;

int AIB[NMAX+1],
    N, M;

void update(int p, int v) {
    while(p <= N) {
        AIB[p] += v;
        p += p & (-p);
    }
}

int query(int p) {
    int s = 0;
    while(p > 0) {
        s += AIB[p];
        p -= p & (-p);
    }
    return s;
}

int main()
{
    in >> N >> M;

    int x, y, z;
    for(int i = 1; i <= N; i++) {
        in >> x;
        update(i, x);
    }

    for(int i = 1; i <= M; i++) {
        in >> x >> y >> z;
        if(x == 0) update(y, -z);
        else out << query(z) - query(y-1) << '\n';
    }
    return 0;
}