Cod sursa(job #1322315)

Utilizator retrogradLucian Bicsi retrograd Data 19 ianuarie 2015 22:29:13
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
#define MAXN 15002

using namespace std;

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

typedef int var;

inline var nrz(const var &x) {
    return x & (-x);
}

var s, n, m;
var A[MAXN];

void mod(var val, var ind) {
    for(; ind<=n; ind += nrz(ind)) {
        A[ind] += val;
    }
}


var query(var ind) {
    s = 0;
    for(;ind>0; ind -= nrz(ind)) {
        s += A[ind];
    }
    return s;
}

int main() {
    fin>>n>>m;
    var t, a, b, type;
    for(var i=1; i<=n; i++) {
        fin>>t;
        mod(t, i);
    }
    while(m--) {
        fin>>type>>a>>b;
        if(type == 0) {
            mod(-b, a);
        } else {
            fout<<query(b)-query(a-1)<<'\n';
        }
    }
    return 0;
}