Cod sursa(job #2912570)

Utilizator CalinachoGherlan Calin Paul Calinacho Data 9 iulie 2022 11:55:09
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 15005;

int N, M;
int aib[NMAX];

int query(int poz){
    int rasp = 0;
    while (poz) {
        // sa taiem cate un bit cate un bit dintre cei mai nesemnificativi
        rasp+=aib[poz];
        poz-= poz & (-poz);
    }
    return rasp;
}

void update(int val,int poz)
{
    while (poz <= N)
    {
        aib[poz] += val;
        poz += poz & (-poz);
    }
}

int main()
{
    f >> N >> M;

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

    int tip, a, b;
    while (M --)
    {
        f >> tip >> a >> b;
        if (tip == 0)
        {
            update(-b, a);
        }
        else
        {
            g << query(b) - query(a - 1) << "\n";
        }
    }
    return 0;
}