Cod sursa(job #1625679)

Utilizator CatlinvCatalin Sbera Catlinv Data 2 martie 2016 20:10:14
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

#define NMAX 30007

using namespace std;

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

int n, T;
int Aib[NMAX];

void update(int poz, int val){
    while(poz <= n){
        Aib[poz] += val;
        poz += poz & (poz ^ (poz - 1));
    }
}

int query(int poz){
    int Ans = 0;
    while(poz){
        Ans += Aib[poz];
        poz -= poz & (poz ^ (poz - 1));
    }
    return Ans;
}

int main(){
    cin >> n >> T;
    for(int i = 1; i <= n; ++i){
        int a;
        cin >> a;
        update(i, a);
    }
    while(T--){
        int Type, a, b;
        cin >> Type >> a >> b;
        if(Type == 0)
            update(a, -b);
        else
            cout << query(b) - query(a - 1) << "\n";
    }
    return 0;
}