Cod sursa(job #2760766)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 28 iunie 2021 22:58:29
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
#define nmax 15001
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int aib[nmax];
int n,m;
int query(int x){
    int rez=0;
    while(x){
        rez+=aib[x];
        x-= (-x)&x;
    }
    return rez;
}
void update(int poz,int val){
    while(poz<=n){
        aib[poz]-=val;
        poz+= (-poz)&poz;
    }
}
int main(){
    in>>n>>m;
    aib[0]=0;
    for(int i=1;i<=n;i++){
        int nr;
        in>>nr;
        aib[i]=nr+query(i-1)-query(i-((-i)&i));
    }
    for(;m;m--){
        bool c;
        int a,b;
        in>>c>>a>>b;
        if(c)out<<query(b)-query(a-1)<<'\n';
        else update(a,b);
    }
}