Cod sursa(job #1424656)

Utilizator andrei1998xAndrei Ionut andrei1998x Data 25 aprilie 2015 11:12:59
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
using namespace std;
ifstream fin("1.in");
ofstream fout("1.out");
int n,m,arb[400010],poz,i,cod,Max,a,b;
void update(int nod, int st, int dr)
{
    if (st==dr)
    {
        arb[nod]=b;
        return;
    }
    int mid=(st+dr)/2;
    if (poz<=mid)
        update(2*nod,st,mid);
    if(poz>mid)
        update(2*nod+1,mid+1,dr);
        arb[nod]=max(arb[2*nod],arb[2*nod+1]);
}

void query(int nod,int st,int dr){
   if(st>=a&&dr<=b)
     {
        Max=max(Max,arb[nod]);
        return;
     }
     int mid=(st+dr)/2;
     if(a<=mid)
        query(2*nod,st,mid);
     if(b>mid)
        query(2*nod+1,mid+1,dr);

}

int main()
{
    fin>>n>>m;
    for (i=1;i<=n;i++)
    {
        fin>>b;
        poz=i;
        update(1,1,n);
    }
    for(i=1;i<=m;i++){
        fin>>cod>>a>>b;
        if(cod==0){
                Max=0;
            query(1,1,n);
        fout<<Max<<'\n';
            continue;
        }
        poz=a;
      update(1,1,n)  ;
    }

    return 0;
}