Cod sursa(job #3362406)

Utilizator And_etcAndrei P And_etc Data 8 august 2026 14:43:10
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

int ss[400555];

void up(int in,int ii,int st,int dr,int val)
{
    if(st==dr)
    {
        ss[in]=val;
    }
    else
    {
        int mij=(st+dr)/2;
        if(ii<=mij)
        {
            up(in*2,ii,st,mij,val);
        }
        else
        {
            up(in*2+1,ii,mij+1,dr,val);
        }
        ss[in]=max(ss[in*2],ss[in*2+1]);
    }
}

int qr(int in,int s,int d,int st,int dr)
{
    if(d<st || s>dr)
    {
        return INT_MIN;
    }
    else if(s>=st && d<=dr)
    {
        return ss[in];
    }
    else
    {
        int mij=(s+d)/2;
        return max(qr(in*2,s,mij,st,dr),qr(in*2+1,mij+1,d,st,dr));
    }
}

int main()
{
    ifstream cin("arbint.in");
    ofstream cout("arbint.out");
    int n,m,c,a,b;
    cin>>n>>m;
    for(int i=1;i<=400000;++i)
    {
        ss[i]=INT_MIN;
    }
    for(int i=1;i<=n;++i)
    {
        cin>>a;
        up(1,i,1,n,a);
    }
    for(int i=1;i<=m;++i)
    {
        cin>>c>>a>>b;
        if(c==0)
        {
            cout<<qr(1,1,n,a,b)<<"\n";
        }
        else
        {
            up(1,a,1,n,b);
        }
    }
    return 0;
}