Cod sursa(job #2223170)

Utilizator stefantagaTaga Stefan stefantaga Data 19 iulie 2018 11:49:59
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>

using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int arb[60005];
int n,m;
void act(int a,int b,int nod,int poz,int val)
{
    if (a==b)
    {
        arb[nod]+=val;
    }
    else
    {
        int mij=(a+b)/2;
        if (poz<=mij)
        {
            act(a,mij,nod*2,poz,val);
        }
        else
        {
            act(mij+1,b,nod*2+1,poz,val);
        }
        arb[nod]=arb[nod*2+1]+arb[nod*2];
    }
}
int intrb(int a,int b,int nod,int qa,int qb)
{
    int r1=0,r2=0;
    if (qa<=a&&qb>=b)
    {
        return arb[nod];
    }
    int mij=(a+b)/2;
    if (qa<=mij)
    {
        r1=intrb(a,mij,nod*2,qa,qb);
    }
    if (qb>mij)
    {
        r2=intrb(mij+1,b,nod*2+1,qa,qb);
    }
    return r1+r2;
}
int i,x,y,z;
int main()
{

    f>>n>>m;
    for (i=1;i<=n;i++)
    {
        f>>x;
        act(1,n,1,i,x);
    }
    for (i=1;i<=m;i++)
    {
        f>>x>>y>>z;
        if (x==0)
        {
            act(1,n,1,y,-z);
        }
        else
        {
            g<<intrb(1,n,1,y,z)<<'\n';
        }
    }
    return 0;
}