Cod sursa(job #2209768)

Utilizator MarcuMLMMischie Marcus Lionel MarcuMLM Data 4 iunie 2018 17:35:03
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;

int lsb(int n){
    return (n&(-n));
}

int n,m,a[15001],x,y,c,nr;

void update(int i, int k){
    while(i<=n){
        a[i]+=k;
        i+=lsb(i);
    }
}

int sum(int i){
    int s = 0;
    while(i>0){
        s+=a[i], i-=lsb(i);
    }
    return s;
}

int main(){
    ifstream f("datorii.in");
    ofstream g("datorii.out");
    f>>n>>m;
    for(int i=1; i<=n; ++i) {
        f>>nr;
        update(i,nr);
    }
    for(int i=0; i<m; ++i){
        f>>c>>x>>y;
        if(c){
            g<<sum(y)-sum(x-1)<<'/n';
        }
        else{
            update(x,-y);
        }

    }
    return 0;
}