Pagini recente » Cod sursa (job #903753) | Cod sursa (job #830186) | Cod sursa (job #502250) | Cod sursa (job #792586) | Cod sursa (job #1678089)
#include<iostream>
#include<cstdio>
using namespace std;
#define Nmax 100005
int a[4*Nmax],n,m,x,maxim,op,y,poz,st,dr;
void update(int k,int p,int u){
if(p==u)
a[k] = x;
else{
int mij;
mij=(p+u)/2;
if(poz<=mij)
update(2*k,p,mij);
if(poz>mij)
update(2*k+1,mij+1,u);
a[k]=max(a[2*k],a[2*k+1]);
}
}
void query(int k,int p,int u)
{
if(st<=p && dr>=u) maxim=max(maxim,a[k]);
else
{
int mij;
mij=(p+u)/2;
if(st<=mij)
query(2*k,p,mij);
if(dr>mij)
query(2*k+1,mij+1,u);
}
}
int main()
{
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
int i;
cin>>n>>m;
for(i=1;i<=n;i++){
cin>>x;
poz=i;
update(1,1,n);
}
for(i=1;i<=m;i++){
cin>>op>>x>>y;
if(op==0)
{ maxim=0;st=x;dr=y;
query(1,1,n);
cout<<maxim<<"\n";
}
else
update(1,1,n);
}
return 0;
}