Pagini recente » Cod sursa (job #1876690) | Cod sursa (job #405171) | Cod sursa (job #1976962) | Cod sursa (job #2848233) | Cod sursa (job #1580700)
#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];
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;
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]);
}
for(int k=1;k<=Q;++k)
{
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;
}