Cod sursa(job #2916417)

Utilizator TarceaIonutTarcea Tudor Ionut TarceaIonut Data 29 iulie 2022 17:25:09
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m;
int a[15005], s[15005];
int lg2[15002], pw2[20];

void precalc();
void read();
void update(int poz, int val);
int ans(int poz);

int main(){
    precalc();
    read();
    return 0;
}
int ans(int poz){
    int r = 0;
    for (int i = poz; i > 0; i -= i & -i)
        r += s[i];
    return r;
}
void update(int poz, int val){
    for (int i = poz; i <= n; i += i & -i)
        s[i] += val;
}
void read(){
    fin >> n >> m;
    for (int i = 1; i <= n; i++){
        fin >> a[i];
        update(i, a[i]);
    }
    int x, y, z;
    for (int i = 0; i < m; i++){
        fin >> z >> x >> y;
        if (z == 0) update(x, -y);
        else fout << ans(y) - ans(x-1) << '\n';
    }
}

void precalc(){
    lg2[1] = 0;
    for (int i = 2; i <= 15000; i++){
        lg2[i] = lg2[i/2] + 1;
    }
    pw2[0] = 1;
    for (int i = 1; i < 20; i++){
        pw2[i] = pw2[i-1] * 2;
    }
}