Cod sursa(job #3313916)

Utilizator popescu_georgePopescu George popescu_george Data 7 octombrie 2025 11:48:56
Problema Arbori de intervale Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream>
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int a[200000];
int main()
{
    int m,n;
    cin>>n>>m;
    for(int i=n;i<2*n;cin>>a[i++]);
    for(int i=n-1;i;a[i]=max(a[2*i],a[2*i+1]),--i);
    for(;m--;) {
        int i,j,k;
        if(cin>>i>>j>>k,i) {
            int l=j+n-1;
            for(a[l]=k,l=(l+1)/2;l;a[l]=max(a[2*l],a[2*l+1]),l>>=1);
        } else {
            int m=max(a[j+n-1],a[k+n-1]);
            for(j=(j+1)/2,k=(k-1)/2;j<k;m=max(a[j],a[k]),j=(j+1)/2,k=(k-1)/2);
            cout<<m<<'\n';
        }
    }
    return 0;
}