Pagini recente » Cod sursa (job #1047802) | Cod sursa (job #1201715) | Cod sursa (job #33526) | Cod sursa (job #1577181) | Cod sursa (job #1044821)
#include<fstream>
#define MAX 200001
using namespace std;
int low, high, arb[MAX], x, poz, mcs;
int macs(int a, int b)
{
if(a>b) return a;
return b;
}
void update (int p, int a, int b)
{
if (a==b)
{
arb[p] = x;
return;
}
int mij = (a+b)/2;
if(poz<=mij) update (p*2, a, mij);
else update ((p*2)+1, mij+1, b);
arb[p] = macs (arb[p*2], arb[(p*2)+1]);
}
void query(int p, int a, int b)
{
if (low<=a && b<=high)
{
if(mcs<arb[p]) mcs = arb[p];
return;
}
int mij = (a+b)/2;
if(low<=mij)
query (p*2, a, mij);
if(mij<high)
query(p*2+1, mij+1, b);
}
int main()
{
int n, m, i, y;
ifstream f("arbint.in");
ofstream g("arbint.out");
f>>n>>m;
for(i=1; i<=n; i++)
{
f>>x;
poz = i;
update(1, 1, n);
}
for(i=1; i<=m; i++)
{
f>>y;
if(y==0)
{
mcs=-1;
f>>low>>high;
query(1, 1, n);
g<<mcs<<"\n";
}
else
{
f>>poz>>x;
update(1, 1, n);
}
}
return 0;
}