Cod sursa(job #3134200)

Utilizator opreaopreacalin@gmail.comCalin Oprea [email protected] Data 28 mai 2023 18:26:17
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include<stdio.h>
#include <fstream>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");

int ST,DR,x[400067],v,p,n,m,i,q,f,a,b,m1;

int Max(int a, int b)
{
    if(a>b)
        return a;
    else
        return b;
}
void search(int nod, int st, int dr)
{
    int mij;
    if(ST <= st && dr <= DR)
    {
        if(m<x[nod])
        m=x[nod];
        return;
    }
    mij=(st+dr)/2;
    if(ST <= mij)
        search(2 * nod, st, mij);
    if(mij < DR)
        search(2 * nod + 1, mij + 1, dr);
}
void insert(int nod, int st, int dr)
{
    int mij;
    if(st==dr)
    {
        x[nod]=v;
        return;
    }
    mij=(st+dr)/2;
    if(p<=mij)
        insert(2 * nod, st, mij);
    else
        insert(2 * nod + 1, mij + 1, dr);

    x[nod]= Max(x[2 * nod], x[2 * nod + 1]);
}
int main()
{

    in>>m1>>n;
    for(i=1;i<=m1;++i)
    {
        in>>q;
        p=i;
        v=q;
        insert(1, 1, m1);
    }
    for(i=1;i<=n;++i)
    {
        in>>f>>a>>b;
        if(f==0)
        {
            m=-1;
            ST=a;
            DR=b;
            search(1, 1, m1);
            out<<m<<'\n';
        }
        else{
            p=a;
            v=b;
            insert(1, 1, m1);
        }
    }
    return 0;
}