Pagini recente » Cod sursa (job #2730745) | Cod sursa (job #2391040) | Cod sursa (job #790897) | Cod sursa (job #136046) | Cod sursa (job #2129484)
#include<fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int N,M,x,y,tip,Max,ind,val,start,fin,MaxArb[4*100001+100];
void Update(int nod,int stanga,int dreapta){
if(stanga==dreapta){
MaxArb[nod]=val;
return;
}
int mij=(stanga+dreapta)/2;
if(ind<=mij)Update(2*nod,stanga,mij);
else Update(2*nod+1,mij+1,dreapta);
MaxArb[nod]=max(MaxArb[2*nod],MaxArb[2*nod+1]);
}
void Query(int nod,int stanga,int dreapta){
if(start<=stanga&&dreapta<=fin){
Max=max(Max,MaxArb[nod]);
return;
}
int mij=(stanga+dreapta)/2;
if(start<=mij)Query(2*nod,stanga,mij);
if(mij<fin)Query(2*nod+1,mij+1,dreapta);
}
int main()
{
f>>N>>M;
for(int i=1;i<=N;++i){
f>>x;
ind=i,val=x;
Update(1,1,N);
}
for(int i=1;i<=M;++i){
f>>tip>>x>>y;
if(tip==0){
Max=-1;
start=x,fin=y;
Query(1,1,N);
g<<Max<<'\n';
}else{
ind=x,val=y;
Update(1,1,N);
}
}
return 0;
}