Pagini recente » Cod sursa (job #86731) | Istoria paginii home | Rating fulger (fulgerul46) | Cod sursa (job #1790084) | Cod sursa (job #2308409)
#include<bits/stdc++.h>
#define N 100005
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int a[N],x,y,mx=0;
void update(int nod, int l, int r){
if(l==r){
a[nod]=y;
return;
}
int m=(l+r)/2;
if(x<=m)
update(2*nod, l, m);
else
update(2*nod+1, m+1 ,r);
a[nod]=max(a[nod*2],a[nod*2+1]);
}
void ans(int nod, int l, int r){
if(x<=l && y>=r){
mx=max(mx,a[nod]);
return;
}
int m=(l+r)/2;
if(x<=m)
ans(nod*2, l, m);
if(y>m)
ans(nod*2+1, m+1, r);
}
int main(){
int n,m,c,i;
in>>n>>m;
for(i=1; i<=n; ++i){
in>>y;
x=i;
update(1,1,n);
}
while(m--){
in>>c>>x>>y;
if(!c){
mx=0;
ans(1,1,n);
out<<mx<<"\n";
}
else
update(1,1,n);
}
return 0;
}