Cod sursa(job #1225219)

Utilizator zaharia_horiaZaharia Horia zaharia_horia Data 1 septembrie 2014 17:23:51
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <iostream>
using namespace std;
#define nmax 15001
ifstream in("datorii.in");
ofstream out("datorii.out");
int n,m;
int S[nmax];
int i,x,tip,t,v,p,q;
void update(int p, int x)
{

    while (p <= n)
    {

        S[p] += x;

        p += (p^(p-1)) & p;

    }
}
int query(int p)
{

    int s = 0;

    while (p > 0)
    {

        s += S[p];

        p -= (p^(p-1)) & p;

    }

    return s;

}
int main()
{
    in >> n >> m;

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

        in >> tip;

        if (tip == 0)
        {

            in >> t >> v;

            update(t, -v);

        }
        else
        {

            in >> p >> q;

            out << query(q) - query(p-1) << "\n";

        }

    }

    return 0;
}