Cod sursa(job #3247200)

Utilizator Iustin_Mircea2010Iustin Mircea Iustin_Mircea2010 Data 6 octombrie 2024 12:24:18
Problema Arbori indexati binar Scor 0
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.15 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <bits/stdc++.h>
using namespace std;
#define int long long
int aib[100005];
int v[100005];
int n, m;
void update(int i, int val){
    while(i <= n){
        aib[i] += val;
        i += i&-i;
    }
}
int query(int val){
    int ret = 0;
    while(i){
        ret += aib[i];
        i -= i&-i;
    }
    return ret;
}
int main()
{
    cin >> n >> m;
    for(int i = 1; i <= n; i++){
        cin >> v[i];
        update(i, v[i]);
    }
    for(int i = 1; i <= m; i++){
        int cer, x, y;
        cin >> cer;
        if(cer == 0){
            cin >> x >> y;
            update(x, y);
            v[x] += y;
        }
        else if(cer == 1){
            cin >> x >> y;
            cout << query(y) - query(x-1) << '\n';
        }
        else{
            cin >> x;
            
        }
    }
    return 0;
}