Pagini recente » Cod sursa (job #622620) | Cod sursa (job #2188615) | Cod sursa (job #1212990) | Cod sursa (job #29207) | Cod sursa (job #1040173)
#include<fstream>
#define dim 100007
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int arb[3*dim],n,i,a,b,op,val,pos,m,maxim,t,q,v[dim];
inline int maxu(int a,int b){
if(a<b)
return b;
return a;
}
void update(int nod,int st,int dr) {
if(st==dr){
arb[nod]=v[pos];
return ;
}
else {
int mid=st+(dr-st)/2;
if(pos<=mid)
update(2*nod,st,mid);
else
update(2*nod+1,mid+1,dr);
}
arb[nod]=maxu(arb[2*nod],arb[2*nod+1]);
}
void query(int nod,int st,int dr){
if(a<=st && b>=dr){
if(arb[nod]>maxim)
maxim=arb[nod];
}
else{
int mij=(st+dr)/2;
if(a<=mij)
query(2*nod,st,mij);
if(b>mij)
query(2*nod+1,mij+1,dr);
}
}
int main () {
f>>n>>m;
for(i=1;i<=n;++i) {
f>>v[i];
pos=i;
update(1,1,n);
}
for(i=1;i<=m;++i){
f>>op>>a>>b;
if(!op){
maxim=-1;
query(1,1,n);
g<<maxim<<"\n";
}
else{
v[a]=b;
pos=a;
update(1,1,n);
}
}
return 0;
}