Cod sursa(job #2786499)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 21 octombrie 2021 08:56:40
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin  ("datorii.in");
ofstream fout ("datorii.out");

int aib[15005];
int n, x;
int q, tip, zi1, zi2, val;

int lsb(int k){return (k&(-k));}

void update(int nod, int val){
    while(nod <= n){
        aib[nod] += val;
        nod += lsb(nod);
    }
}

int suma(int nod){
    int sol=0;
    while(nod > 0){
        sol += aib[nod];
        nod -= lsb(nod);
    }
    return sol;
}

int main (){
    fin>>n>>q;
    for(int i=1; i <= n; i++){
        fin>>x;
        update(i, x);
    }

    for(int query=1; query <= q; query++){
        fin>>tip;
        if(tip == 0){
            fin>>zi1>>val;
            update(zi1, -val);
        }else{
            fin>>zi1>>zi2;
            fout<<suma(zi2) - suma(zi1-1)<<"\n";
        }
    }
    return 0;
}