Cod sursa(job #2152753)

Utilizator iandavidroIan David Bocioaca iandavidro Data 5 martie 2018 19:34:19
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#define nmax 15000
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int aib[nmax*4],n;
void add(int pos,int val){
    while(pos<=n){
        aib[pos]+=val;
        pos+=((pos^(pos-1))&pos);
    }
}
int querry(int pos){
    int s=0;
    while(pos>0){
        s+=aib[pos];
        pos-=((pos^(pos-1))&pos);
    }
    return s;
}
int main(){
    int m,i,x,op,a,b;
    f>>n>>m;
    for(i=1;i<=n;i++){
        f>>x;
        add(i,x);
    }
    for(i=1;i<=m;i++){
        f>>op>>a>>b;
        if(op==0){
            add(a,-b);
        }
        if(op==1){
            g<<querry(b)-querry(a-1)<<'\n';
        }
    }
    return 0;
}