Cod sursa(job #3326475)

Utilizator brianabucur11Briana Bucur brianabucur11 Data 29 noiembrie 2025 09:23:09
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
#define ub(x) (x&(-x))

using namespace std;

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

const int nmax = 1e5 + 5;
int n, v[nmax], aib[nmax];

void update (int poz, int val)
{
    for (int i = poz; i <= n; i += ub(i))
        aib[i] += val;
}

int query (int poz)
{
    int s = 0;
    for (int i = poz; i >= 1; i -= ub(i))
        s += aib[i];
    return s;
}

int main ()
{
    int q;
    fin >> n >> q;
    for (int i = 1; i <= n; i++)
    {
        fin >> v[i];
        update(i,v[i]);
    }
    for (int i = 1; i <= q; i++)
    {
        int cer;
        fin >> cer;
        if (cer == 0)
        {
            int poz, val;
            fin >> poz >> val;
            update(poz,-val);
        }
        else
        {
            int st, dr;
            fin >> st >> dr;
            fout << query(dr) - query(st - 1) << '\n';
        }
    }
    return 0;
}