Cod sursa(job #3135270)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 2 iunie 2023 15:01:14
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include<fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int r[200002],i,n,m,a,b,x;
bool q;
int main()
{
    f>>n>>m;
    for(i=0;i<n;++i)
        f>>r[i+n];
    for(i=n-1;i;--i)
        r[i]=max(r[i*2],r[i*2+1]);
    for(;m;--m) {
        f>>q;
        if(q) {
            for(f>>a,a+=n-1,f>>r[a],a>>=1;a;a>>=1)
                r[a]=max(r[a<<1],r[(a<<1)+1]);
        } else {
            for(f>>a>>b,a+=n-1,b+=n-1,x=0;a<=b;)
                x=max(x,max(r[a],r[b])),b=(b-1)/2,a=(a+1)/2;
            g<<x<<'\n';
        }
    }
    return 0;
}