Pagini recente » Cod sursa (job #1717014) | Cod sursa (job #1166986) | Cod sursa (job #2283833) | Istoria paginii runda/concurs12345/clasament | Cod sursa (job #923986)
Cod sursa(job #923986)
#include<fstream>
#define son (nod<<1)
#define mid ((left+right)>>1)
#define NMAX 100005
using namespace std;
int n,m,AINT[(1<<18)+5],val,poz,maxim,L,R;
inline int max(int a,int b)
{
if(a<b)
return b;
return a;
}
inline void update(int left,int right,int nod)
{
if(left==right)
{
AINT[nod]=val;
return;
}
if(poz<=mid)
update(left,mid,son);
else
update(mid+1,right,son+1);
AINT[nod]=max(AINT[son],AINT[son+1]);
}
inline void query(int left,int right,int nod)
{
if(L<=left && right<=R)
{
maxim=max(maxim,AINT[nod]);
return;
}
if(L<=mid)
query(left,mid,son);
if(R>mid)
query(mid+1,right,son+1);
}
int main()
{
ifstream fin("arbint.in");
ofstream fout("arbint.out");
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>val;
poz=i;
update(1,n,1);
}
for(int i=1;i<=m;i++)
{
fin>>val;
if(val)
{
fin>>poz>>val;
update(1,n,1);
continue;
}
maxim=-1;
fin>>L>>R;
query(1,n,1);
fout<<maxim<<'\n';
}
fin.close();
fout.close();
return 0;
}