Pagini recente » Cod sursa (job #2029375) | Cod sursa (job #423876) | Cod sursa (job #416764) | Cod sursa (job #1374789) | Cod sursa (job #2081143)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("arbint.in");
ofstream fout ("arbint.out");
const int nmax=100001;
int n,m,arb[4*nmax+3],a,b,c,maxi;
void update(int node, int left, int right){
if(left==right){
arb[node]=c;
return;
}
int mid=(left+right)/2;
if(b<=mid)update(2*node,left,mid);
else update(2*node+1,mid+1,right);
arb[node]=max(arb[2*node],arb[2*node+1]);
}
void querry(int node, int left, int right){
if(b<=left && right<=c){
maxi=max(maxi,arb[node]);
return;
}
int mid=(left+right)/2;
if(b<=mid)querry(2*node,left,mid);
if(mid<c)querry(2*node+1,mid+1,right);
}
int main()
{
fin>>n>>m;
for(b=1;b<=n;++b){
fin>>c;
update(1,1,n);
}
for(int i=1;i<=m;++i){
fin>>a>>b>>c;
if(a)update(1,1,n);
if(!a){
maxi=-1;
querry(1,1,n);
fout<<maxi<<'\n';
}
}
return 0;
}