Cod sursa(job #1933727)

Utilizator GoogalAbabei Daniel Googal Data 20 martie 2017 21:52:34
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#define nm 15005
#define zeros(x) ((x^(x-1))&x)

using namespace std;

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

int n,m,aib[nm],x,y,z;

void ADD(int x, int q)
{
    int i;
    for(i=x;i<=n;i+=zeros(i))
        aib[i]+=q;
}

void read()
{
    int i;
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        ADD(i,x);
    }
}

int compute(int x)
{
    int i,rez=0;

    for(i=x;i>0;i-=zeros(i))
        rez+=aib[i];
    return rez;
}

void write()
{
    int i;
    for(i=1;i<=n;i++)
        fout<<aib[i]<<' ';
    fout<<"\n\n";

}

int main()
{
    int i;
    read();
    //write();
    for(i=1;i<=m;i++)
    {
        fin>>x>>y>>z;
        if(x==0)
        {
            ADD(y,z*-1);
            //write();
        }
        else
            fout<<compute(z)-compute(y-1)<<'\n';
    }
    return 0;
}