Cod sursa(job #2947206)

Utilizator LucaMuresanMuresan Luca Valentin LucaMuresan Data 25 noiembrie 2022 20:20:38
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

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

#define int long long

int n;
int aib[1001];

void update (int pos, int val)
{
    for (int i=pos; i<=n; i += i & -i)
        aib[i] += val;
}

int query (int pos)
{
    int ret = 0;
    for (int i=pos; i>0; i -= i & -i)
        ret += aib[i];
    return ret;
}

signed main()
{
    int q;
    in >> n >> q;

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

    while (q--)
    {
        int op, x, y;
        in >> op >> x >> y;

        if (op == 1)
            out << query(y) - query(x-1) << '\n';
        else
            update(x, -y);
    }

    return 0;
}