Pagini recente » Cod sursa (job #510867) | Cod sursa (job #1838284) | Cod sursa (job #1329018) | Cod sursa (job #60979) | Cod sursa (job #881666)
Cod sursa(job #881666)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
fstream f("arbint.in",ios::in);
fstream g("arbint.out",ios::out);
long long n,m,i,j,a,b,c,x[500005],maxi,start,finish,maximum,ert,pos;
int maxim (int a, int b)
{
if (a>b) return a;
else return b;
}
void szamol(int cs, int bal, int jobb)
{
if (start<=bal && jobb<=finish)
{
if ( maximum<x[cs] ) maximum=x[cs];
return;
}
int kozep = (bal+jobb)/2;
if ( start <= kozep ) szamol(2*cs,bal,kozep);
if ( kozep < finish ) szamol(2*cs+1,kozep+1,jobb);
}
void update(int cs,int bal, int jobb)
{
if (jobb==bal)
{
x[cs]=ert;
return ;
}
int kozep=(jobb+bal)/2;
if (pos<=kozep) update(2*cs,bal,kozep);
else update(2*cs+1,kozep+1,jobb);
x[cs] = maxim( x[2*cs], x[2*cs+1] );
}
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
{
f>>a;
pos=i;
ert=a;
update(1,1,n);
}
for (i=1;i<=m;i++)
{
f>>a>>b>>c;
if (a==0)
{
maximum=-1;
start=b;
finish=c;
szamol(1,1,n);
g<<maximum<<"\n";
}
else
{
pos=b;
ert=c;
update(1,1,n);
}
}
}