Cod sursa(job #1101015)

Utilizator muresan_bogdanMuresan Bogdan muresan_bogdan Data 7 februarie 2014 20:06:22
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<iostream>
#include<fstream>
using namespace std;

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

int arb[100001], n, m, i, a, b;
bool c;

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

int read(int idx) {
    int sol = 0;
    while(idx > 0) {
        sol += arb[idx];
        idx -= (idx & -idx);
    }
    return sol;
}

int main() {
    fin >> n >> m;
    for(i = 1; i <= n; i++) {
        fin >> a;
        update(i, -a);
    }
    for(i = 1; i <= m; i++) {
        fin >> c;
        if(!c) {
            fin >> a >> b;
            update(a, b);
        }
        if(c) {
            fin >> a >> b;
            fout << read(b) - read(a - 1) << '\n';
        }
    }
    fin.close();
    fout.close();
    return 0;
}