Cod sursa(job #2755803)

Utilizator deliabaltatescuBaltatescu Delia Elena deliabaltatescu Data 28 mai 2021 10:50:58
Problema Arbori de intervale Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include<fstream>
#define fn "arbint."
using namespace std;
ifstream f(fn"in");
ofstream g(fn"out");
int a[500001],n,m,x,y,i,j,maxim;
int max(int x,int y)
{
    if(x<y) return y;
    return x;
}
void schimb(int poz,int st,int dr)
{
    if(st==dr){
        a[poz]=y;
        return;}
    int mij=(st+dr)/2;
    if(x<=mij)
        schimb(poz*2,st,mij);
    else
        schimb(poz*2+1,mij+1,dr);
    a[poz]=max(a[poz*2],a[poz*2+1]);
}

void maxim(int poz,int st,int dr)
{
    if(x<=st && y>=dr) {
        maxi=max(a[poz],maxi);
        return;}
    int mij=(st+dr)>>1;
    if(y>mij)
        maxim(poz*2+1,mij+1,dr);
    if(x<=mij)
        maxim(poz*2,st,mij);
}
int main()
{
    int com;
    f>>n>>m;
    for(int i=1;i<=n;i++){
        f>>y;
        x=i;
        schimb(1,1,n);}
    for(i=1;i<=m;i++){
        f>>com>>x>>y;
        if(com==1)
            schimb(1,1,n);
        else {
            maxi=0;
            maxim(1,1,n);
            g<<maxi<<'\n';}}

}