Cod sursa(job #3321249)

Utilizator MateiDiaconuDiaconu Matei Stefan MateiDiaconu Data 8 noiembrie 2025 19:08:29
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

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

#define MAXN 15000

int aib[MAXN + 1];
int n;

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

void update(int poz, int x){
    int i;
    for(i = poz; i <= n; i += lsb(i)){
        aib[i] += x;
    }
}

int query(int poz){
    int i, sum;
    sum = 0;

    for(i = poz; i > 0; i -= lsb(i)){
        sum += aib[i];
    }
    return sum;
}

int main()
{
    int m, nr, i, p, q, op;

    fin>>n>>m;

    for(i = 1; i <= n; i++){
        fin>>nr;
        update(i, nr);
    }

    for(i = 0; i < m; i++){
        fin>>op>>p>>q;
        if(op == 0){
            update(p, -q);
        }
        else{
            fout<<query(q) - query(p - 1)<<'\n';
        }
    }

    fin.close();
    fout.close();
    return 0;
}