Cod sursa(job #1740917)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 12 august 2016 15:07:34
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#define VAL 15005

using namespace std;

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

int N, M, i, op;
int aib[VAL], a, b;

int zero(int x)
{
    return x&(-x);
}

void update(int a, int b)
{
    while (a<=N)
    {
        aib[a]+=b;
        a+=zero(a);
    }
}

int suma(int a, int b)
{
    int x=0;
    int y=0;
    a--;
    while (a>0)
    {
        x+=aib[a];
        a-=zero(a);
    }
    while (b>0)
    {
        y+=aib[b];
        b-=zero(b);
    }
    return y-x;
}

int main()
{
    fin >> N >> M;
    for (i=1; i<=N; i++)
    {
        fin >> a;
        update(i, a);
    }
    for (i=1; i<=M; i++)
    {
        fin >> op >> a >> b;
        if (op==0)
          update(a, -b);
        else
          fout << suma(a, b) << '\n';
    }
    fin.close();
    fout.close();
    return 0;
}