Pagini recente » Cod sursa (job #2646240) | Cod sursa (job #1097431) | Cod sursa (job #1195152) | Cod sursa (job #493038) | Cod sursa (job #1037423)
#include<fstream>
using namespace std;
#define BM 1000005
int n,m;
int a[BM];
int st,dr,p,val,mx;
void up(int nod, int x,int y){
if(x==y){
a[nod]=val;
return;
}
int mij=(x+y)/2;
if(p<=mij)up(2*nod,x,mij);
else up(2*nod+1,mij+1,y);
a[nod]=max(a[2*nod],a[2*nod+1]);
}
void scoate(int nod, int x,int y){
if(x>=st&&y<=dr){
mx=max(mx, a[nod]);
return;
}
int mij=(x+y)/2;
if(st<=mij)scoate(2*nod,x,mij);
if(dr>mij)scoate(2*nod+1,mij+1,y);
}
int main (){
int i,t,x,y;
ifstream f("arbint.in");
ofstream g("arbint.out");
f>>n>>m;
for(i=1;i<=n;++i){
f>>val;
p=i;
up(1,1,n);
}
for(i=1;i<=m;++i){
f>>t>>x>>y;
if(t==0){
st=x,dr=y;
mx=0;
scoate(1,1,n);
g<<mx<<'\n';
}
else {
p=x,val=y;
up(1,1,n);
}
}
return 0;
}