Cod sursa(job #2755372)

Utilizator HatersMcCristian Ioan HatersMc Data 27 mai 2021 00:24:56
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 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 query(int poz,int st,int dr)
{
    if(x<=st && y>=dr) {
        maxim=max(a[poz],maxim);
        return;}
    int mij=(st+dr)>>1;
    if(y>mij)
        query(poz*2+1,mij+1,dr);
    if(x<=mij)
        query(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 {
            maxim=0;
            query(1,1,n);
            g<<maxim<<'\n';}}
   
}