Pagini recente » Cod sursa (job #523362) | Cod sursa (job #530241) | Cod sursa (job #1074326) | Cod sursa (job #978612) | Cod sursa (job #1200950)
#include <fstream>
using namespace std;
#define dim 100005
int Max_tree[dim*4];
int X,poz,ans,a,b;
inline int max(int a,int b){
return (a>b?a:b);
}
void update(int k,int l,int r){
if(l==r){
Max_tree[k]=X;
return;
}
int mid=(l+r)/2;
if(poz<=mid) update(k*2,l,mid);
else update(k*2+1,mid+1,r);
Max_tree[k]=max(Max_tree[k*2],Max_tree[k*2+1]);
}
void query(int k,int l,int r){
if(a<=l && b>=r){
if(ans < Max_tree[k]) ans=Max_tree[k];
return;
}
int mid=(l+r)/2;
if(a<=mid) query(k*2,l,mid);
if(b>mid) query(k*2+1,mid+1,r);
}
int main(){
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m;
bool p;
f >> n >> m;
for(int i=1;i<=n;i++){
f >> X,poz=i;
update(1,1,n);
}
while(m--){
f >> p >> a >> b;
if(p){
poz=a,X=b;
update(1,1,n);
}
else{
ans=0;
query(1,1,n);
g << ans << "\n";
}
}
}