Pagini recente » Cod sursa (job #2405701) | Cod sursa (job #1089286) | Cod sursa (job #2027190) | Cod sursa (job #850925) | Cod sursa (job #1321706)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int p,l,qs,qd,n,v[4*100001],Qtype,val,aux,i,Q;
int query(int as,int ad,int p)
{
if (as > qd || ad < qs)
return 0;
if (as >= qs && ad <= qd)
return v[p];
return max(query(as,(as+ad)>>1,p<<1),query((((as+ad)>>1)+1),ad,(p<<1)+1));
}
int main()
{
f>>n>>Q;
aux=n;
while(aux/=2)++l;
l+=1;
for(i=1;i<=n;++i)
{
f>>v[i-1+(1<<l)];
}
for(i=(1<<l)-1;i>0;--i)
{
v[i]=max(v[i<<1],v[(i<<1)+1]);
}
for(int k=1;k<=Q;++k)
{
f>>Qtype;
if(Qtype == 0)
{
f>>qs>>qd;
g<<query(1,1<<l,1)<<'\n';
}
else
{
f>>p>>val;
v[(1<<l)+p-1]=val;
for(i=((1<<l)+p-1)>>1;i>0;i>>=1)
v[i]=max(v[i<<1],v[(i<<1)+1]);
}
}
return 0;
}