Pagini recente » Cod sursa (job #102742) | Cod sursa (job #1146324) | Cod sursa (job #2563974) | Cod sursa (job #397390) | Cod sursa (job #1147731)
#include <iostream>
#include <fstream>
#include<algorithm>
#include<math.h>
#define maxn 100010
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,x,m;
long long int v[maxn];
int y,cod,l,r,poz;
long long int maxx;
void update(int i,int st,int dr){
if(st!=dr){
int m=(st+dr)/2;
if(poz<=m)
update(2*i,st,m);
else
update(2*i+1,m+1,dr);
v[i]=max(v[2*i],v[2*i+1]);
}
else
v[i]=x;
}
void maxi(int i,int st,int dr){
if(st>=l && r>=dr)
maxx=max((long long int )maxx,v[i]);
else{
int m=(st+dr)/2;
if(r<=m)
maxi(2*i,st,m);
else
if(l>m)
maxi(2*i+1,m+1,dr);
else{
maxi(2*i,st,m);
maxi(2*i+1,m+1,dr);
}
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++){
f>>x;
poz=i;
update(1,1,n);
}
for(int i=1;i<=m;i++){
f>>cod>>x>>y;
if(cod==1){
poz=x;
x=y;
update(1,1,n);
}
else{
maxx=-1;
l=x;
r=y;
maxi(1,1,n);
g<<maxx<<'\n';
}
}
return 0;
}