Cod sursa(job #3325212)

Utilizator radukkkkkkkCornea Radu radukkkkkkk Data 24 noiembrie 2025 22:46:25
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;

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

int n,m,v[15005],aib[15005];

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

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

int query(int date){
    if(date<=0) return 0;
    int res = 0;
    while(date>0){
        res += aib[date];
        date-=lsb(date);
    }
    return res;
}

int main(){
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        fin>>v[i];
        aib[i] = v[i];
    }
    for(int i=1;i<=n;i++){
        int parent = i + lsb(i);
        if(parent<=n) aib[parent] += aib[i];
    }
    int q,r,l;
    for(int i=1;i<=m;i++){
        fin>>q>>l>>r;
        if(q == 0){
            add(l,-r);
        }else fout<<query(r) - query(l-1) << '\n';
    }
    return 0;
}