Cod sursa(job #3297100)

Utilizator DasapSapunaru Daniel Dasap Data 21 mai 2025 00:54:19
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include<fstream>
using namespace std;ifstream fin("arbint.in");ofstream fout("arbint.out");const int NMAX=1e5;
int v[4*NMAX],n,m,i,k,poz,val,op,lft,rght,mmax;
void ins(int nod,int st,int dr){
    if(st==dr){v[nod]=val;return;}
    int mid=(st+dr)/2;
    if(poz<=mid)ins(2*nod,st,mid);
    else ins(2*nod+1,mid+1,dr);
    v[nod]=max(v[2*nod],v[2*nod+1]);
}
void query(int nod,int st,int dr){
    if(lft<=st&&dr<=rght){mmax=max(mmax,v[nod]);return;}
    int mid=(st+dr)/2;
    if(lft<=mid)query(2*nod,st,mid);
    if(mid<rght)query(2*nod+1,mid+1,dr);
}
int main()
{
    fin>>n>>m;for(i=1;i<=n;i++){fin>>k;poz=i;val=k;ins(1,1,n);}
    for(i=1;i<=m;i++){
        fin>>op;switch(op){
        case 0:{
            fin>>lft>>rght;mmax=-1;
            query(1,1,n);fout<<mmax<<'\n';
            break;
        }
        case 1:{
            fin>>poz>>val;
            ins(1,1,n);
            break;
        }
        }
    }
    return 0;
}