Cod sursa(job #2999540)

Utilizator LXGALXGA a LXGA Data 11 martie 2023 10:17:09
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
struct query
{
    int f,s;
} q;
int n,m,a,b,c,x;
int t[400001];
void update(int nod,query q,int l,int r)
{
    if(l==r)
        t[nod]=q.s;
    else
    {
        int mid=(l+r)/2;
        if(q.f<=mid)
            update(2*nod,q,l,mid);
        else
            update(2*nod+1,q,mid+1,r);
        t[nod]=max(t[2*nod],t[2*nod+1]);
    }
}
int maxx(int nod,query q,int l,int r)
{
    if(q.f<=l && r<=q.s)
        return t[nod];
    int mid=(l+r)/2,s1=0,s2=0;
    if(q.f<=mid)
        s1=maxx(2*nod,q,l,mid);
    if(q.s>mid)
        s2=maxx(2*nod+1,q,mid+1,r);
    return max(s1,s2);
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        update(1,{i,x},1,n);
    }
    while(m--)
    {
        cin>>c>>q.f>>q.s;
        if(c==0)
            cout<<maxx(1,q,1,n)<<'\n';
        else
            update(1,q,1,n);
    }
    return 0;
}