Cod sursa(job #2252323)

Utilizator TudorCaloianCaloian Tudor-Ioan TudorCaloian Data 2 octombrie 2018 18:30:41
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

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

long long int n, m, t, v, p, q, fenwick[80000];
bool o;


void Update(int pos, long long int val)
{
    while(pos <= n)
    {
        fenwick[pos] += val;
        pos += pos&(-pos);
    }

}
long long int Query(int pos)
{
    long long int sum = 0;
    while(pos > 0)
    {
        sum += fenwick[pos];
        pos -= pos&(-pos);
    }
    return sum;
}
int main()
{
    fin >> n >> m;

    for(int i = 1; i <= m; i++)
    {
       long long  int x;
        fin >> x;
        Update(i, x);
    }

    for(int i = 1; i <= m; i++)
    {
        fin >> o;
        if(o == 0)
        {
            fin >> t >> v;
            Update(t, -v);
        }
        else
        {
            fin >> p >> q;
            fout << Query(q) - Query(p-1) << '\n';
        }
    }
}