Cod sursa(job #2576708)

Utilizator PaulRPFRebenciuc Paul-Florin PaulRPF Data 6 martie 2020 21:55:21
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
#define Nmax 100055
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int M,N,i,x,Ma;
int query,a,b;
int Tree[4*Nmax];

void Update(int nod,int st,int dr)
{
    if(st==dr){Tree[nod]=b;return;}
    int md=(st+dr)/2;
    if(a<=md)Update(2*nod,st,md);
    else Update(2*nod+1,md+1,dr);
    Tree[nod]=max(Tree[2*nod],Tree[2*nod+1]);
}

void Answer(int nod,int st,int dr)
{
    if(a<=st and dr<=b){Ma=max(Ma,Tree[nod]);return;}
    int md=(st+dr)/2;
    if(a<=md)Answer(2*nod,st,md);
    if(md<b)Answer(2*nod+1,md+1,dr);
}
int main()
{
    f>>N>>M;
    for(a=1;a<=N;a++)f>>b,Update(1,1,N);
    while(M--)
    {
        f>>query>>a>>b;
        if(query==1)Update(1,1,N);
        else Ma=-1,Answer(1,1,N),g<<Ma<<"\n";
    }
    return 0;
}