Cod sursa(job #1688230)

Utilizator vlad6001Pintilie Vlad vlad6001 Data 13 aprilie 2016 12:41:07
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;

#define zeros(x) ((x^(x-1))&x)

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

int i, nr, operatii, AIB[1000000], valoare, cerinta, a, b;

void Add(int x, int quantity)
{
    int i;
    for(i = x; i <= nr; i += zeros(i))
    {
        AIB[i] += quantity;
    }
}

int Compute(int x)
{
    int i, cat=0;
    for(i=x; i > 0; i -= zeros(i))
        cat += AIB[i];
    return cat;
}

int main()
{
    fin >> nr >> operatii;
    for(i=1; i <= nr; i++)
    {
        fin >> valoare;
        Add(i, valoare);
    }
    for(i=1; i <= operatii; i++)
    {
        fin >> cerinta >> a >> b;
        if(cerinta == 0)
            Add(a, -b);
        else
            fout << Compute(b)-Compute(a)+AIB[a] << '\n';
    }
}