Cod sursa(job #2904543)

Utilizator pinmelissa05Pintenaru-Dumitrescu Nicole Melissa pinmelissa05 Data 17 mai 2022 23:58:02
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("arbint.in");
ofstream g("arbint.out");

int n,m,v[400001],type,a,b,ad[400001],maxq;
void update (int c,int st,int dr,int a,int b,int x)
{
    if (a<=st && dr<=b)
    {
        ad[c]=x;
    }
    else
    {
        int mijl=(st+dr)/2;
        if (a<=mijl)
            update(2*c,st,mijl,a,b,x);
        if (b>mijl)
        {
            update(2*c+1,mijl+1,dr,a,b,x);
        }
        ad[c]=max(ad[2*c],ad[2*c+1]);
    }
}
void query (int c,int st,int dr,int a,int b)
{
    if (a<=st && dr<=b)
    {
        maxq=max(maxq,ad[c]);
    }
    else
    {
        int mijl=(st+dr)/2;
        if (a<=mijl)
            query(2*c,st,mijl,a,b);
        if (b>mijl)
            query(2*c+1,mijl+1,dr,a,b);
    }
}
int main()
{
    f>>n>>m;
    for (int i=1; i<=n; i++)
    {
        f>>v[i];
        update(1,1,n,i,i,v[i]);
    }
    for (int i=1; i<=m; i++)
    {
        f>>type>>a>>b;
        if (type==1)
        {
            update(1,1,n,a,a,b);
        }
        if (type==0)
        {
            maxq=0;
            query(1,1,n,a,b);
            g<<maxq<<'\n';
        }

    }
    return 0;
}