Cod sursa(job #1795334)

Utilizator alin1999Buzatu Alin alin1999 Data 2 noiembrie 2016 11:15:23
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[450010],n,m,x,y,z,i,S,poz,ok;
void achitare(int nod,int st,int dr)
{
    if(st==dr)
    {
        v[nod]=v[nod]+x;
        return;
    }
    else
    {
        int m=(st+dr)/2;
        if(poz<=m)
        achitare(2*nod,st,m);
        else
            achitare(2*nod+1,m+1,dr);
            v[nod]=v[2*nod]+v[2*nod+1];

    }
}
void interogare(int nod,int st,int dr)
{
    if(x<=st && y>=dr)
    {
        S+=v[nod];
    }
    else
    {
        int m=(st+dr)/2;
        if(x<=m)
            interogare(2*nod,st,m);
        if(y>=m+1)
            interogare(2*nod+1,m+1,dr);
    }
}
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
        {fin>>x;poz=i;achitare(1,1,n);}
    for(i=1;i<=m;i++)
    {
        fin>>ok>>x>>y;
        if(ok==0)
                {
                    poz=x;
                    x=y*(-1);achitare(1,1,n);}
        if(ok==1)
            {S=0;
                interogare(1,1,n);
                fout<<S<<endl;}

    }
    return 0;
}