Cod sursa(job #2776372)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 19 septembrie 2021 14:47:45
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include<fstream>
#define Z 200002
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int r[Z],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/=2;a;a/=2)
                r[a]=max(r[a*2],r[a*2+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;
}