Cod sursa(job #2666395)

Utilizator unchnounMihai Panduru unchnoun Data 1 noiembrie 2020 18:17:42
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
// REZOLVARE PRIN ARBORI INDEXATI BINAR

#include <fstream>
using namespace std;

const int nMax = 15000;
int n, q, vec[nMax + 5], aib[nMax + 5];

int query(int x)
{
    int sum = 0;
    for (int i = x; i >= 1; i -= i&(-i))
        sum += aib[i];

    return sum;
}

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

    fin >> n >> q;
    for (int i = 1; i <= n; ++i)
        fin >> vec[i];
    for (int i = 1; i <= n; ++i)
        for (int j = i; j <= n; j += j&(-j))
            aib[j] += vec[i];

    for (int i = 1; i <= q; ++i)
    {
        int num, a, b;
        fin >> num >> a >> b;
        if (num == 0)
        {
            for (int j = a; j <= n; j += j&(-j))
                aib[j] -= b;
        }
        else if (num == 1)
            fout << query(b) - query(a - 1) << '\n';
    }
}