Cod sursa(job #2115302)

Utilizator AndreiMironMiron Andrei AndreiMiron Data 26 ianuarie 2018 16:52:20
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>

using namespace std;
ifstream cin("arb.in");
ofstream cout ("arb.out");
const int MAX=1e5+1;
int v[MAX],m,n,arb[4*MAX],a,b;
void update (int nod , int st , int dr,int poz){
if(st==dr){
    arb[nod]=v[st];
}
else {

    int mij =(st+dr)/2;
    if(poz==0 or ( st<=poz and poz<=mij)){
        update(nod*2, st , mij , poz);
    }
    if(poz==0 or (mij+1<=poz and poz<=dr)){
        update(nod*2 +1 , mij+1 , dr,poz);
    }
    arb[nod]=arb[nod*2];
    if(arb[nod*2 +1] > arb[nod]){
        arb[nod] =arb[nod*2 +1];
    }
}
}
int query (int nod , int st , int dr){
    if(a<=st and dr<=b){
        return arb[nod];
    }
    else{
        int mij=(st+dr)/2;
        int rezs=0;
        if(a<=mij){
            rezs=query(nod*2, st,mij);
        }
        int rezd=0;
        if(b<=mij+1){
            rezd=query(nod*2,mij+1,dr);
        }
        if(rezs>rezd)
            return rezs;
        else return rezd;
    }
}
int main()
{cin>>n>>m;
for(int i=1;i<=n;++i)
    cin>>v[i];
update(1,1,n,0);
for(int i=1;i<=m;++i){
    int cod ;
    cin>>cod>>a>>b;
    if(cod==0){

    }
    else {
        v[a]=b;
        update(1,1,n,a);
    }

}
        return 0;
}