Pagini recente » Cod sursa (job #408883) | Cod sursa (job #131427) | Cod sursa (job #301839) | Cod sursa (job #1773003) | Cod sursa (job #1601095)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int a[400069],n,m,ans,x,y;
void Update(int nod,int st,int dr)
{
if (st==dr) a[nod]=y;
else
{ int mid=(st+dr)/2;
if (x<=mid)
Update(2*nod,st,mid);
else Update(2*nod+1,mid+1,dr);
a[nod]=max(a[2*nod],a[2*nod+1]);
}
}
void Query(int nod,int st,int dr)
{
if (x<=st && dr<=y) ans=max(ans,a[nod]);
else
{ int mid=(st+dr)/2;
if (x<=mid) Query(2*nod,st,mid);
if (y>mid) Query(2*nod+1,mid+1,dr);
}
}
int main()
{ int i,t;
f>>n>>m;
for(i=1;i<=n;i++)
{ f>>y; x=i;
Update(1,1,n);
}
for(i=1;i<=m;i++)
{ f>>t>>x>>y;
if (!t) {ans=0; Query(1,1,n); g<<ans<<"\n";}
else Update(1,1,n);
}
return 0;
}