Cod sursa(job #2625727)

Utilizator SirbuSirbu Ioan Sirbu Data 6 iunie 2020 09:31:33
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
#define MAXN 15002

using namespace std;

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


int aib[MAXN], N;

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

void Adauga(int zi, int val)
{
    for (int i = zi; i <= N; i += LSB(i))
        aib[i] += val;
}

int Suma (int zi)
{
    int s = 0;
    for (int i = zi; i > 0; i -= LSB(i))
        s += aib[i];
    return s;
}



int main() {

    int M, nr, op, q1, q2;

    fin >> N >> M;
    for (int i = 1; i <= N; ++i){
        fin >> nr;
        Adauga(i, nr);
    }

    for (int i=0; i < M; i++) {
        fin >> op >> q1 >> q2;
        if (op == 0)
            Adauga (q1, - q2);
        if (op == 1)
            fout <<  Suma(q2) - Suma(q1 - 1) << '\n';
    }
    return 0;
}