Cod sursa(job #3236420)

Utilizator stefanrotaruRotaru Stefan-Florin stefanrotaru Data 28 iunie 2024 15:19:17
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

int n, m, val, caz, a, b, AIB[15000];

int zeros(int i)
{
    return (i & -i);
}

void update(int poz, int val)
{
    for (; poz <= n; poz += zeros(poz)) {
        AIB[poz] += val;
    }
}

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

    for (; poz; poz -= zeros(poz)) {
        sum += AIB[poz];
    }

    return sum;
}

int main()
{
    f >> n >> m;

    for (int i = 1; i <= n; ++i) {
        f >> val;
        update(i, val);
    }

    while (m--) {
        f >> caz >> a >> b;

        if (caz == 0) {
            update(a, -b);
        }
        else {
            g << query(b) - query(a - 1) << '\n';
        }
    }

    return 0;
}