Pagini recente » Cod sursa (job #1972367) | Cod sursa (job #1366836) | Cod sursa (job #814031) | Cod sursa (job #3174555) | Cod sursa (job #1324612)
# include <fstream>
# include <algorithm>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int i,j,n,m,a,b,tip,maxx;
int arb[300000],x,y;
void actualizare(int nod, int ci, int cs)
{
if (ci==cs)
{
arb[nod]=b;
}
else {
int mij=(ci+cs)/2;
if (a<=mij) actualizare(nod*2, ci, mij);
if (a>mij) actualizare (nod*2+1, mij+1, cs);
arb[nod]=max(arb[nod*2], arb[nod*2+1]);
}
}
void maxim (int nod, int ci, int cs)
{
if (a<=ci && cs<=b) maxx=max(maxx, arb[nod]);
else {
int mij=(ci+cs)/2;
if (a<=mij) maxim(nod*2, ci, mij);
if (b>mij) maxim(nod*2+1, mij+1, cs);
}
}
int main ()
{
f>>n>>m;
for (i=1; i<=n; ++i)
{f>>x; a=i; b=x; actualizare(1,1,n);}
for (i=1; i<=m; ++i)
{
f>>tip;
if (tip==0)
{
maxx=0;
f>>a>>b;
maxim (1,1,n);
g<<maxx<<"\n";
}
else {
f>>a>>b;
actualizare (1,1,n);
}
}
return 0;
}