Cod sursa(job #2906383)

Utilizator Savu_Stefan_CatalinSavu Stefan Catalin Savu_Stefan_Catalin Data 25 mai 2022 22:38:16
Problema Arbori de intervale Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int n,m,x,aib[200005],i,a,b,cer;
void upd(int x,int val)
{
    aib[a+n]=x;
    for (int i=a+n;i>1;i/=2) aib[i/2]=max(aib[i],aib[i^1]);
}
int query(int a,int b)
{
    int ras=0;
    for (a+=n,b+=n;a<b;a/=2,b/=2)
    {
        if (a&1) ras=max(ras,aib[a++]);
        if (b&1) ras=max(ras,aib[--b]);
    }
    return ras;
}
int main()
{
    in>>n>>m;
    for (i=0;i<n;++i)
    {
        in>>x;
        aib[i+n]=x;
    }
    for (i=n-1;i>0;--i) aib[i]=max(aib[i*2],aib[i*2+1]);
    for (i=0;i<m;++i)
    {
        in>>cer>>a>>b;
        a--;
        if (cer==1) upd(a,b);
        else out<<query(a,b)<<'\n';
    }
    return 0;
}