Pagini recente » Cod sursa (job #2681992) | Cod sursa (job #1836710) | Cod sursa (job #461529) | Cod sursa (job #1712601) | Cod sursa (job #1236082)
#include<fstream>
#define N 100100
#define FOR(a,b,c) for(register int a=b;a<=c;++a)
using namespace std;
ifstream f("aint.in");
ofstream g("aint.out");
int H[N<<2],sol,a,b,tip,n,m;
void upd(int l,int r,int po)
{
if(l==r)
{
H[po]=b;
return;
}
int m=(l+r)>>1;
if(a<=m)
upd(l,m,po<<1);
else
upd(m+1,r,(po<<1)+1);
H[po]=max(H[po<<1],H[(po<<1)+1]);
}
void quer(int l,int r,int po)
{
if(l>=a&&r<=b)
{
sol=max(sol,H[po]);
return;
}
int m=(l+r)>>1;
if(a<=m)
quer(l,m,po<<1);
if(b>m)
quer(m+1,r,(po<<1)+1);
}
int main ()
{
f>>n>>m;
FOR(i,1,n)
{
a=i;
f>>b;
upd(1,n,1);
}
FOR(i,1,m)
{
f>>tip;
if(tip)
{
f>>a>>b;
upd(1,n,1);
}
else
{
sol=0;
f>>a>>b;
quer(1,n,1);
g<<sol<<"\n";
}
}
return 0;
}