Pagini recente » Cod sursa (job #2986888) | Cod sursa (job #2577910) | Cod sursa (job #1481935) | Cod sursa (job #1358622) | Cod sursa (job #1321807)
#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,tn;
int query(int as,int ad,int p)
{
if (as > qd || ad < qs)
return 0;
if (as >= qs && ad <= qd)
return v[p];
int t=(as+ad)>>1,rs=0,rd=0;
p<<=1;
if(qs <= t)rs=query(as,t,p);
if(qd > t)rd=query(t+1,ad,p+1);
return max(rs,rd);
}
int main()
{
f>>n>>Q;
aux=n;
while(aux/=2)++l;
l+=1;
tn=1<<l;
for(i=1;i<=n;++i)
{
f>>v[i-1+tn];
}
for(i=tn-1;i>0;--i)
{
v[i]=max(v[i<<1],v[(i<<1)+1]);
}
while(Q--)
{
f>>Qtype;
if(Qtype == 0)
{
f>>qs>>qd;
g<<query(1,tn,1)<<'\n';
}
else
{
f>>p>>val;
v[tn+p-1]=val;
for(i=(tn+p-1)>>1;i>0;i>>=1)
v[i]=max(v[i<<1],v[(i<<1)+1]);
}
}
return 0;
}