Cod sursa(job #2312835)

Utilizator marian013Giugioiu Marian Constantin marian013 Data 5 ianuarie 2019 16:34:33
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include<fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int max(int a,int b)
{
    if(a<b)
        return b;
    return a;
}
int x,k,a,b,v[500000],maxim,c,i,n,m;
void update(int nod, int st, int dr)
{
    if(st==dr)
    {
        v[nod]=x;
        return;
    }
    int mij=(st+dr)/2;
    if(k<=mij)
        update(2*nod,st,mij);
    else
        update(2*nod+1,mij+1,dr);
    v[nod]=max(v[2*nod],v[2*nod+1]);
}
void querry(int nod,int st, int dr)
{
    if(a<=st&&b>=dr)
    {
        if(maxim<v[nod])
            maxim=v[nod];
        return;
    }
    int mij=(st+dr)/2;
    if(a<=mij)
        querry(2*nod,st,mij);
    if(b>mij)
        querry(2*nod+1,mij+1,dr);
}
int main()
{
    f>>n>>m;
    for(k=1;k<=n;k++)
    {
        f>>x;
        update(1,1,n);
    }
    for(i=1;i<=m;i++)
    {
        f>>c>>a>>b;
        if(c==0)
        {
            maxim=0;
            querry(1,1,n);
            g<<maxim<<"\n";
        }
        else
        {
            k=a;
            x=b;
            update(1,1,n);
        }
    }
    return 0;
}