Pagini recente » Cod sursa (job #2868501) | Cod sursa (job #374215) | Cod sursa (job #1115878) | Istoria paginii runda/stalpi2 | Cod sursa (job #1628834)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int i,n,m,t,val,poz,x,y,semn,ma,a[10001];
void actualizare (int nod,int st,int dr)
{ int mij;
if(st==dr)
a[nod]=val;
else
{mij=(st+dr)/2;
if(mij>=poz)
actualizare(2*nod,st,mij);
if(poz>mij)
actualizare(2*nod+1,mij+1,dr);
a[nod]=max(a[2*nod],a[2*nod+1]);
}
}
void interogare(int nod,int st,int dr)
{ int mij;
if(x<=st&&dr<=y)
ma=max(ma,a[nod]);
else
{mij=(st+dr)/2;
if(x<=mij)
interogare(2*nod,st,mij);
if(y>mij)
interogare(2*nod+1,mij+1,dr);
}
}
int main()
{ f>>n>>m;
for ( int i = 1; i <= n; ++i ){
f >> val;
poz = i;
actualizare(1, 1, n);
}
for(i=1;i<=m;++i)
{ f>>semn>>x>>y;
if(semn==0)
{ma=0;
interogare(1,1,n);
g<<ma<<'\n';
}
else
{poz=x;
val=y;
actualizare(1,1,n);
}
}
return 0;
}