Cod sursa(job #989362)

Utilizator meehighStancu Mihai meehigh Data 25 august 2013 15:37:58
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
 
using namespace std;
 
#define NMAX 15010
 
long tree[NMAX];
 
void update(int i, int n, int val){
    while (i <= n){
        tree[i] += val;
        i += -i & i;
    }
}
 
long read(int i){
    long sum = 0;
    while (i > 0){
        sum += tree[i];
        i -= -i & i;
    }
    return sum;
}
 
int main(){
 
    ifstream fin("datorii.in");
    ofstream fout("datorii.out");
 
    int n,m,a;
    fin >> n >> m;
 
    for (int i=1; i<=n; i++){
        fin >> a;
        update(i,n,a);
    }
         
    int o,t,v,p,q;
 
    for (int i=0; i<m; i++){
        fin >> o;
 
        if (o==0){
            fin >> t >> v;
            update(t,n,-v);
        }
        else {
            fin >> p >> q;
            fout << read(q) - read(p-1) << endl;
        }
    }
 
    fin.close();
    fout.close();
 
    return 0;
}