Cod sursa(job #3151436)

Utilizator ReBeGhElRebegea Stefan ReBeGhEl Data 21 septembrie 2023 11:58:44
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,q;
vector<int> v;
vector<int> aib;
void update(int i,int number) {
    while(i<=n){
        aib[i]-=number;
        i +=i & (-i);
    }
}
int prefix_query(int i) {
    int s = 0;
    while(i > 0) {
        s+=aib[i];
        i-=i & (-i);
    }
    return s;
}
int range_s(int i,int j) {
    return prefix_query(j) - prefix_query(i - 1);
}

int32_t main()
{
    fin >> n >> q;
    v.resize(n + 1);
    aib.resize(n + 1);
    int a;
    for(int i = 1;i<=n;i++){
        fin >> a;
        update(i,-a);
    }
    while(q--) {
        int op;
        fin >> op;
        int index,minuss;
        fin >> index >> minuss;
        if(op == 0) update(index,minuss);
        else {
            fout << range_s(index,minuss) << '\n';
        }
    }
    return 0;
}