Pagini recente » Cod sursa (job #731375) | Cod sursa (job #1121613) | Cod sursa (job #2548788) | Cod sursa (job #354994) | Cod sursa (job #1759507)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int x,y,n,m,i,type;
long long v[100999],maxim;
void inserare(int nod, int st, int dr)
{
if(st == dr)
{
v[nod] = y;
return;
}
else
{
int mij = (st + dr) / 2;
if(x <= mij) inserare(nod * 2, st, mij);
else inserare(nod * 2 + 1, mij + 1, dr);
v[nod] = max(v[nod * 2], v[nod * 2 + 1]);
}
}
void interogare(int nod, int st, int dr)
{
if(x <= st && y >= dr) maxim = max(maxim, v[nod]);
else
{
int mij = (st + dr) / 2;
if(x <= mij) interogare(nod * 2, st, mij);
if(y > mij) interogare(nod * 2 + 1, mij + 1, dr);
}
}
int main()
{
f>>n>>m;
for(i = 1; i <= n; i++)
{
f>>y;
x = i;
inserare(1,1,n);
}
for(i = 1; i <= m; i++)
{
f>>type>>x>>y;
if(type == 1) inserare(1,1,n);
else
{
maxim = 0;
interogare(1,1,n);
g<<maxim<<'\n';
}
}
return 0;
}