Cod sursa(job #356885)

Utilizator catalina5catalina serban catalina5 Data 17 octombrie 2009 11:46:12
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include<fstream>

using namespace std;

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

int a[50001],n,x,px,m,maxf;

void constructie(int nod,int st, int dr){
    if(st>dr)
        return;
    if(st==dr)
        a[nod]=x;
    int mij=(st+dr)/2;
    if(px<=mij)
        constructie(2*nod, st,mij);
    else
        constructie(2*nod,mij+1,dr);
}

void maxim_interval(int nod, int st, int dr){
    if(px<=st&&x>=dr){
        if(maxf<a[nod])
            maxf=a[nod];
        return;
    }
    int mij=(st+dr)/2;
    if(px<=mij)
        constructie(nod*2,st,mij);
    else
        constructie(nod*2+1,mij+1,dr);
}



void citire(){
    fin>>n>>m;
    for(int i=0;i<n;i++){
        fin>>x;
        px=i;
        constructie(1,1,n);
    }
    int ok;
    for(int i=0;i<m;i++){
        fin>>ok>>px>>x;
        maxf=-1;
        if(ok==0){
            maxim_interval(1,1,n);
            fout<<maxf<<"\n";
        }
        else
            constructie(1,1,n);
    }
}



int main(){
    citire();
    return 0;
}