Cod sursa(job #2801870)

Utilizator Andrei_Tud1Andrei Tudorache Andrei_Tud1 Data 16 noiembrie 2021 23:40:25
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");
int A[15001], n;

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

int query(int poz)
{
    int s = 0;
    for(int i = poz; i; i -= (i&-i))
        s += A[i];
    return s;
}

int main()
{
    int q, x, op, T, V, st, dr, i;
    fin >> n >> q;
    for(i = 1; i <= n; i++)
    {
        fin >> x;
        update(i, x);
    }
    for(i = 1; i <= q; i++)
    {
        fin >> op;
        if(op == 1)
        {
            fin >> st >> dr;
            cout << query(dr) - query(st-1) << endl;
        }
        else
        {
            fin >> T >> V;
            update(T, -V);
        }
    }
    fin.close();
    fout.close();
    return 0;
}