Pagini recente » Cod sursa (job #2141100) | Cod sursa (job #2560716) | Cod sursa (job #697822) | Cod sursa (job #2594241) | Cod sursa (job #303164)
Cod sursa(job #303164)
#include<fstream.h>
#include<stdlib.h>
int N,M,a,b,A[200001],i=1,x,mx;
void act(int n,int st,int dr)
{if(st==dr)
A[n]=x;
else
{int m=(st+dr)/2;
if(i<=m)act(2*n,st,m);
else act(2*n+1,m+1,dr);
A[n]=A[2*n];
if(A[2*n]<A[2*n+1])A[n]=A[2*n+1];
}
}
void in(int n,int st,int dr)
{if(a<=st&&dr<=b)
{if(mx<A[n])mx=A[n];}
else
{int m=(st+dr)/2;
if(a<=m) in(2*n,st,m);
if(b>m) in(2*n+1,m+1,dr);}
}
int main()
{ifstream f("arbint.in");
ofstream g("arbint.out");
f>>N>>M;
for(;i<=N;++i)
{f>>x;
act(1,1,N);}
for(i=1;i<=M;++i)
{f>>x>>a>>b;
if(!x)
{mx=-1;
in(1,1,N);
g<<mx<<'\n';}
else
{i=a;
x=b;
act(1,1,N);}
}
}