Cod sursa(job #2414461)

Utilizator cyg_TheoPruteanu Theodor cyg_Theo Data 24 aprilie 2019 16:34:26
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>

using namespace std;

const int NMAX = 100002;

int v[NMAX];
int aib[NMAX];

void update(int idx, int val){
    for(;idx<NMAX;idx+=idx&-idx)
        aib[idx]+=val;
}

int query(int idx){
    int ans=0;
    for(;idx;idx-=idx&-idx)
        ans+=aib[idx];
    return ans;
}

int main(){
    freopen("aib.in","r",stdin);
    freopen("aib.out","w",stdout);
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i){
        scanf("%d",&v[i]);
        update(i,v[i]);
    }

    int caz,a,b;

    for(;m;m--){
        scanf("%d%d",&caz,&a);
        if(caz==2){
            int i;
            for(i=1;i<=n;++i)
                if(query(i)==a)
                    break;
            printf("%d\n",i);

        }else{
            scanf("%d",&b);
            if(caz==0)
                update(a,b);
            if(caz==1)
                printf("%d\n",query(b)-query(a-1));
        }
    }

    return 0;
}