Pagini recente » Profil tudorbuhnia | Cod sursa (job #2141856) | Cod sursa (job #156946) | Cod sursa (job #103433) | Cod sursa (job #1308664)
#include<iostream>
#include <fstream>
using namespace std;
#define dim 100001
int n,m,MaxArb[4*dim+66],start,finish,Val,Pos,maxim;
int Maxim(int a, int b)
{if (a>b) return a; return b;}
void Update(int nod,int left,int right)
{
if (left==right)
{MaxArb[nod]=Val; return;}
int div=(left+right)/2;
if(Pos<=div) Update(2*nod,left,div);
else Update(2*nod+1,div+1,right);
MaxArb[nod]=Maxim(MaxArb[2*nod],MaxArb[2*nod+1]);
}
void Query(int nod,int left,int right)
{
if(start<=left&&right<=finish)
{if ( maxim < MaxArb[nod] ) maxim = MaxArb[nod]; return;}
int div = (left+right)/2;
if ( start <= div ) Query(2*nod,left,div);
if ( div < finish ) Query(2*nod+1,div+1,right);
}
int main()
{
int x,a,b,i;
ifstream f("arbint.in");
ofstream g("arbint.out");
f>>n>>m;
for(i=1;i<=n;i++)
{ f>>x;
Pos=i, Val=x;
Update(1,1,n);}
for(i=1;i<=m;i++)
{ f>>x>>a>>b;
if(x==0)
{ maxim=-1;
start=a; finish=b;
Query(1,1,n);
g<<maxim<<endl;}
else
{ Pos=a; Val=b;
Update(1,1,n);}
}
f.close();
g.close();
return 0;
}