Cod sursa(job #1479365)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 31 august 2015 10:27:26
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>

const char iname[] = "datorii.in";
const char oname[] = "datorii.out";
const int MAXN = 700 + 5;

int n, m, tree[MAXN];

void update(int index, int val){
    while(index <= n){
        tree[index] += val;
        index += index &(-index);
    }
}

int querry(int index){
    int sum = 0;
    while(index > 0){
        sum += tree[index];
        index -= index &(-index);
    }
    return sum;
}

void read(){
    freopen(iname, "r", stdin);
    scanf("%d %d", &n, &m);
    for(int i = 1; i <= n; ++i){
        int aux;
        scanf("%d", &aux);
        update(i, aux);
    }
}

void solve(){
    freopen(oname, "w", stdout);
    for(int i = 0; i < m; ++i){
        int c, a, b;
        scanf("%d %d %d", &c, &a, &b);
        if(c == 0) update(a, -b);
        else printf("%d\n", querry(b)-querry(a-1));
    }
}

int main()
{
    read();
    solve();
    return 0;
}