Cod sursa(job #3319818)

Utilizator markymrkKemenes Mark markymrk Data 3 noiembrie 2025 12:30:46
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
#define lsb(x) (x & (-x))
using namespace std;
int a[100000];
void update(int x, int val, int N, int a[]){
    for (int i =x; i<=N; i+= lsb(i))
        a[i] += val;
}
int query (int x, int a[]){
    int sum = 0;
    for (int i = x; i> 0; i -=lsb(i)){
        sum+=a[i];
    }
    return sum;
}

int main(){
    int n,m,z;
    cin >> n >> m;
    for (int i = 0; i<n; ++i){
        cin >> z;
        update(i, z, n, a);
    }
    int x,val,y;
    for (int j =0; j<m; ++j){
        int b;
        cin >> b;
        if (b == 0){
            cin >> x >> val;
            update(x,val, n, a);
        }
        else if (b==1){
            cin >>  x >>y;
            cout << query(y,a) - query(x-1, a)<<"\n";
        }
    }

}