Pagini recente » Cod sursa (job #1031506) | Cod sursa (job #2778095) | Cod sursa (job #1515651) | Cod sursa (job #810211) | Cod sursa (job #1675051)
#include <bits/stdc++.h>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
#define Nmax 100000
#define inf -1223443545
int n,m,a,b,c,Max[4*Nmax],left,right,finish,Pos,Val,start,res,x;
void Update(int nod, int left, int right){
if(left == right){
Max[nod]=Val;
return;
}
int mij = (left + right)/2;
if(Pos <= mij)Update(2*nod,left,mij);
else Update(2*nod+1,mij+1,right);
Max[nod]=max(Max[2*nod],Max[2*nod+1]);
}
void Querry(int nod, int left, int right){
if(start<=left && finish >= right){
res=max(res, Max[nod]);
return;
}
int mij=(left+right)/2;
if(start <= mij) Querry(2*nod,left,mij);
if(finish>mij) Querry(2*nod+1,mij+1,right);
}
int main(){
in>>n>>m;
for(int i=1;i<=n;i++){
in>>x;
Pos=i;Val=x;
Update(1,1,n);
}
for(int i=1;i<=m;i++){
in>>c>>a>>b;
if(c==0){
res=inf;
start=a;finish=b;
Querry(1,1,n);
out<<res<<'\n';
}
else
{
Pos=a;Val=b;
Update(1,1,n);
}
}
return 0;
}