Pagini recente » Cod sursa (job #2503435) | Cod sursa (job #1732173) | Cod sursa (job #2906267) | Cod sursa (job #840795) | Cod sursa (job #380304)
Cod sursa(job #380304)
#include<iostream.h>
inline int max(int a,int b)
{if(a>b)
return a;
else
return b;}
inline int query(int nod,int st,int dr,int left,int right)
{ return max(query(nod/2,(st+dr)/2,dr,left,right),query(nod/2+1,(st+dr/2)+1,dr,left,right));
if(left<st||right>left)
return -1;}
int main()
{int v1[100001],j,i,a,b,c,v[100001],m,n;
cin>>m>>n;
for(i=1;i<=n;i++)
cin>>v[i];
int x=2;
while(n>x)
x=x*2;
for(i=x;i<=x+n;i++)
v1[i]=v[i];
for(i=x-1;i>=1;i--)
v1[i]=max(v1[2*i],v1[2*i+1]);
for(i=1;i<=m;i++)
{cin>>a>>b>>c;
if(a==1)
{v1[x+a-1]=b;
for(j=(x+a-1)/2;j>=1;j=j/2)
v1[j]=max(v1[j*2],v1[j*2+1])}
else
cout<<query(1,2,3,b,c);}
return 0;}