Cod sursa(job #1427727)

Utilizator tudorcomanTudor Coman tudorcoman Data 2 mai 2015 22:50:48
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb

#include <stdio.h>

const char *fi = "datorii.in";
const char *fo = "datorii.out";

int bin[15050], N;

int zeros (int x) {
    return ( x ^ (x - 1)) & x;
}

void Add (int pos, int val) {
    
    for (int i = pos; i <= N; i += zeros(i))
        bin[i] += val;
}

int Compute (int pos) {
    
    int Ans = 0;
    
    for (int i = pos; i > 0; i -= zeros(i))
        Ans += bin[i];
    
    return Ans;
}

int main(int argc, const char * argv[]) {
    
    freopen (fi, "r", stdin);
    freopen (fo, "w", stdout);
    int T,x;
    scanf("%d%d",&N,&T);
    
    for (int i=1; i <= N; ++ i) {
        scanf("%d",&x);
        Add(i,x);
    }
    
    int a,b,c;
    
    while (T -- ) {
        scanf("%d%d%d",&a,&b,&c);
        if (a == 0)
            Add (b,-c);
        else
            printf("%d\n",Compute(c) - Compute(b-1));
    }
    return 0;
}