Cod sursa(job #2563927)

Utilizator noemi_pz4Penzes Noemi noemi_pz4 Data 1 martie 2020 16:13:14
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#define dim 15010
using namespace std;

    int N,M,Pos,Val,X,Y,Z,Arb[4*dim+66],S,i;
    ifstream f("datorii.in");
    ofstream g("datorii.out");

    void Update(int nod, int stg, int dr)
    {   if(stg==dr)
        {   Arb[nod]=Arb[nod]+Val;
            return;
        }
        int mij=(stg+dr)/2;
        if(Pos<=mij) Update(2*nod,stg,mij);
        else         Update(2*nod+1,mij+1,dr);

        Arb[nod]=Arb[2*nod]+Arb[2*nod+1];
    }

    void Query(int nod, int stg, int dr)
    {   if(Y<=stg && dr<=Z)
        {   S=S+Arb[nod];
            return;
        }

        int mij=(stg+dr)/2;
        if(Y<=mij) Query(2*nod,stg,mij);
        if(mij<Z)  Query(2*nod+1,mij+1,dr);
    }


int main()
{
    f>>N>>M;
    for(i=1; i<=N; i++)
    {   f>>X;
        Pos=i; Val=X;
        Update(1,1,N);
    }

    for(i=1; i<=M; i++)
    {   f>>X>>Y>>Z;
        if(X==0)
        {   Val=-Z;
            Pos=Y;
            Update(1,1,N);
        }
        else
        {   S=0;
            Query(1,1,N);
            g<<S<< '\n';
        }
    }

    f.close();
    g.close();
    return 0;
}