Cod sursa(job #2804069)

Utilizator Stefan_DomuncoStefan Domunco Stefan_Domunco Data 20 noiembrie 2021 20:10:25
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 15e3+5;
int n, m;
int AIB[NMAX];

void create_AIB()
{
    int i, next;
    for(i = 1; i <= n; ++i)
    {
        next = i + (i & -i);
        if(next <= n)
            AIB[next] += AIB[i];
    }
}

void update_AIB(int poz, int val)
{
    while(poz <= n)
    {
        AIB[poz] -= val;
        poz += poz & -poz;
    }
}

int sum_AIB(int poz)
{
    int sol = 0;
    while(poz > 0)
    {
        sol += AIB[poz];
        poz -= poz & -poz;
    }
    return sol;
}

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

    int i;
    for(i = 1; i <= n; ++i)
        fin >> AIB[i];
    create_AIB();
    int tip, p, q;
    for(i = 1;  i <= m; ++i)
    {
        fin >> tip >> p >> q;
        if(tip == 0)
            update_AIB(p, q);
        else fout << sum_AIB(q) - sum_AIB(p-1) << '\n';
    }
    return 0;
}