Pagini recente » Cod sursa (job #2491233) | Cod sursa (job #449730) | Cod sursa (job #219067) | Cod sursa (job #2063783) | Cod sursa (job #1076791)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("arbint.in");
ofstream g("arbint.out");
const int N_MAX = 100005;
int n,m,x,k,a,b,start,sfarsit,maxim,val,poz,i;
int arb[4*N_MAX+66];
void update (int st, int dr, int x)
{
if (st == dr)
{
arb[x] = val;
return ;
}
int mij = (st + dr) / 2;
if (poz <= mij)
update(st,mij,2*x);
else
update(mij + 1,dr,2*x + 1);
arb[x] = max(arb[2*x],arb[2*x + 1]);
}
void query (int x, int st, int dr)
{
if (start <= st && dr <= sfarsit)
{
if (maxim < arb[x]) maxim = arb[x];
return ;
}
int mij = (st + dr) / 2;
if (start <= mij) query(2*x,st,mij);
if (mij <= sfarsit) query(2*x + 1,mij + 1,dr);
}
int main ()
{
f >> n >> m;
for (i = 1; i <= n; i++)
{
poz = i;
val = x;
update (1,1,n);
}
for (i = 1; i <= m; i++)
{
f >> x >> a >> b;
if (x == 0)
{
maxim = -1;
start = a;
sfarsit = b;
query(1,1,n);
g << maxim << "\n";
}
else
{
poz = a;
val = b;
update(1,1,n);
}
}
f.close();
g.close();
return 0;
}