Pagini recente » Cod sursa (job #541480) | Cod sursa (job #2674014) | Cod sursa (job #1872318) | Cod sursa (job #899940) | Cod sursa (job #583759)
Cod sursa(job #583759)
#include <fstream>
using namespace std;
int ARB[100006*2];
int n,m,mx,P,A,B,C;
void update(int l,int r,int nod)
{
if(l==r)
{
ARB[nod]=C;
return;
}
int k=(l+r)/2;
if(P<=k) update(l,k,2*nod);
else update(k+1,r,2*nod+1);
ARB[nod]=max(ARB[2*nod],ARB[2*nod+1]);
}
void querry(int l,int r,int nod)
{
if(A<=l&&B>=r)
{
if(mx<ARB[nod])mx=ARB[nod];
return ;
}
int k=(l+r)/2;
if(A<=k) querry(l,k,2*nod);
if(k<B) querry(k+1,r,2*nod+1);
}
int main()
{
int i,x,y,op;
ifstream in("arbint.in");
ofstream out("arbint.out");
in>>n>>m;
for(i=1;i<=n;i++)
{
in>>x;
P=i;C=x;
update(1,n,1);
}
for(i=0;i<m;i++)
{
in>>op>>x>>y;
if(op==1)
{
P=x,C=y;
update(1,n,1);
}
else
if(op==0)
{
mx=-1;
A=x,B=y;
querry(1,n,1);
out<<mx<<'\n';
}
}
in.close(),out.close();
return 0;
}