Pagini recente » Cod sursa (job #1145243) | Cod sursa (job #1395444) | Cod sursa (job #917574) | Cod sursa (job #2359731) | Cod sursa (job #1995475)
#include<fstream>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int maxim(int a,int b){
if(a>b)
return a;
return b;
}
const int NMAX=100005;
int arb[2*NMAX],a,b,n,m,pos,cmax;
void querry(int nod,int st,int dr){
if(a<=st&&dr<=b){
if(arb[nod]>cmax)
cmax=arb[nod];
}
else{
int mij=(st+dr)/2;
if(a<=mij)
querry(2*nod,st,mij);
if(mij<b)
querry(2*nod+1,mij+1,dr);
}
}
void add(int nod,int st,int dr){
if(st==dr)
arb[nod]=b;
else{
int mij=(st+dr)/2;
if(pos<=mij)
add(2*nod,st,mij);
else
add(2*nod+1,mij+1,dr);
arb[nod]=maxim(arb[2*nod],arb[2*nod+1]);
}
}
void citire(){
int i,nr;
fin>>n>>m;
for(i=1;i<=n;++i){
fin>>nr;
pos=i; b=nr;
add(1,1,n);
}
}
void solve(){
while(m--){
int cod;
fin>>cod>>a>>b;
if(cod==0){
cmax=0;
querry(1,1,n);
fout<<cmax<<'\n';
}
else{
pos=a;
add(1,1,n);
}
}
}
int main(){
citire();
solve();
}