Cod sursa(job #990723)

Utilizator Anca_PaneaPanea Anca Anca_Panea Data 28 august 2013 23:00:30
Problema Arbori de intervale Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
using namespace std;
#include<fstream>
#include<algorithm>
#include<cmath>
ifstream eu("arbint.in");
ofstream tu("arbint.out");
#define Nmax 100002
int IT[1<<17];
int N,M,poz,val,QL,QR,QMax;
inline void Update(int nod,int L,int R)
{
    int Mid=(L+R)/2;
    if(L==R)
    {
        IT[nod]=val;
        return;
    }
    if(poz<=Mid)
        Update(2*nod,L,Mid);
    else
        Update(2*nod+1,Mid+1,R);
    IT[nod]=max(IT[2*nod],IT[2*nod+1]);
}
inline int Query(int nod,int L,int R)
{
    int Mid=(L+R)/2;
    if(QL<=L&&R<=QR)
        return IT[nod];
        if(QL<=Mid)
            QMax=max(QMax,Query(2*nod,L,Mid));
        if(QR>Mid)
            QMax=max(QMax,Query(2*nod+1,Mid+1,R));
        return QMax;
}
 int main()
 {
    int op;
    eu>>N>>M;
    for(poz=1;poz<=N;poz++)
    {
        eu>>val;
        Update(1,1,N);
    }
    while(M--)
    {
        eu>>op;
        if(op==0)
        {
            QMax=0;
            eu>>QL>>QR;
            tu<<Query(1,1,N)<<"\n";
        }
        if(op==1)
        {
            eu>>poz>>val;
            Update(1,1,N);
        }
    }
    return 0;
 }