Cod sursa(job #2301148)

Utilizator LucianTLucian Trepteanu LucianT Data 12 decembrie 2018 18:24:55
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;

const int maxN=1e5+1;

inline int lsb(int x){
    return x&(-x);
}

int n,q;
int aib[maxN];

void updateAIB(int pos,int val){
    for(int i=pos;i<=n;i+=lsb(i))
        aib[i]+=val;
}

int queryAIB(int pos){
    int res=0;
    for(int i=pos;i>0;i-=lsb(i))
        res+=aib[i];

    return res;
}

int main(){
    ifstream cin("datorii.in");
    ofstream cout("datorii.out");

    cin>>n>>q;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        updateAIB(i,x);
    }

    while(q--){
        int op,x,y;
        cin>>op>>x>>y;

        if(op==0){
            updateAIB(x,-y);
        } else {
            cout<<queryAIB(y)-queryAIB(x-1)<<'\n';
        }
    }

    return 0;
}