Cod sursa(job #3366812)

Utilizator TheodosiussMiguel Theodosiuss Data 4 octombrie 2026 14:34:28
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;
const int Nmax=1e5+5;
int aib[Nmax];
int v[Nmax];
//g(t)=t&(t-1)
//pt upd: i -> (i|(i-1))+1
int n,a,b;
int sum(int i){
    int s=0;
    while(i>0){
        s+=aib[i];
        i=i&(i-1);
    }
    return s;
}
void upd(int i,int val){
    while(i<=n){
        aib[i]+=val;
        i=(i|(i-1))+1;
    }
}
int main()
{
    ifstream cin("aib.in");
    ofstream cout("aib.out");
    int m,x;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>v[i];
        upd(i,v[i]);
    }
    for(int i=0;i<m;i++){
        cin>>x>>a>>b;
        if(x==0){
            cout<<sum(b)-sum(a-1)<<"\n";
        }
        else{
            upd(a,b);
        }
    }
    return 0;
}