Pagini recente » Monitorul de evaluare | Cod sursa (job #1837255) | Cod sursa (job #2011644) | Istoria paginii runda/summer_challenge_intarziat | Cod sursa (job #1551645)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int v[400000],n,q,x,poz,i,j,MAX,z,t;
void update(int nod,int st,int dr)
{
int m;
if (st==dr)
v[nod]=x;
else {
m=(st+dr)/2;
if (poz<=m) update(2*nod,st,m);
else update(2*nod+1,m+1,dr);
v[nod]=max(v[2*nod],v[2*nod+1]);
}
}
void query(int nod,int st,int dr)
{
int m;
if (i<=st && dr<=j)
MAX=max(MAX,v[nod]);
else
{
m=(st+dr)/2;
if (i<=m) query(2*nod,st,m);
if (j>m) query(2*nod+1,m+1,dr);
}
}
int main()
{
f>>n>>q;
for (i=1;i<=n;i++)
{
f>>x;
poz=i;
update(1,1,n);
}
for (z=1;z<=q;z++)
{
f>>t;
if (t==0){
f>>i>>j;
MAX=0;
query(1,1,n);
g<<MAX<<'\n';
}
else{
f>>poz>>x;
update(1,1,n);
}
}
return 0;
}