Cod sursa(job #3310655)

Utilizator mtcmtcmtc mtc mtcmtc Data 15 septembrie 2025 18:11:53
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
const int maxn=15005;
int aib[maxn];
int n,m;
int V[maxn];
int lsb(int x){
    return x&(-x);
}
void update(int poz,int val){
    for(;poz<=n;poz+=lsb(poz)){
        aib[poz]-=val;
    }
}
void update1(int poz,int val){
    for(;poz<=n;poz+=lsb(poz)){
        aib[poz]+=val;
    }
}
int query(int poz){
    int s=0;
    for(;poz>0;poz-=lsb(poz)){
        s+=aib[poz];
    }
    return s;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>V[i];
        update1(i,V[i]);
    }
    while(m--){
        int op;
        cin>>op;
        if(op==0){
            int poz,val;
            cin>>poz>>val;
            update(poz,val);
        }
        else{
            int st,dr;
            cin>>st>>dr;
            cout<<query(dr)-query(st-1)<<'\n';
        }
    }
    return 0;
}