Cod sursa(job #3244150)

Utilizator postolachepostolache postolache Data 23 septembrie 2024 21:08:03
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.41 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 <fstream>
int bit[500000];
using namespace std;

ifstream cin ("aib.in");
ofstream cout ("aib.out");



int n ,m , a, unu, doi, sigma=0;

void update(int c , int val){
    while(c <= n){
        bit[c]+=val;
        c+= c & -c;
    }
}

int calcul(int h){
    int sum=0;
    while(h > 0){
        sum+=bit[h];
        h-=h & -h;
    }
    return sum;
}

int calculok(int k , int l){
    return calcul (l) - calcul(k - 1);
    
}

int main()
{
    
    cin >> n >> m;
    for(int i=1;i <= n;i++){
        cin >> a;
        update(i , a);
    }
    for(int i=0;i < m;i++){
        cin >> a ;
        if(a == 0){
            cin >> unu >> doi;
            update (unu ,doi);
        }else if(a ==1){
            cin >> unu >> doi;
            cout << calculok(unu , doi) << "\n";
        }else{
            //cautare binara
            if(doi == unu ){
                cout << sigma- 1;
            }else{
                cout << "-1";
            }
           
            
            cout << "\n";
        }
        doi=0;
        sigma=0;
    }

    return 0;
}