Pagini recente » Cod sursa (job #2303586) | Cod sursa (job #2228446) | Cod sursa (job #2338485) | Cod sursa (job #2829275) | Cod sursa (job #2904729)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int a, b, maxim[300010], maxim2, x, n, m, operatie;
void modif(int ind, int st, int dr)
{
if(st == dr) maxim[ind] = x;
else
{
int mij = (st+dr)>>1;
if(mij >= a) modif(ind*2, st, mij);
else modif(ind*2+1,mij+1,dr);
maxim[ind]=max(maxim[ind*2],maxim[ind*2+1]);
}
}
void f1(int ind, int st, int dr)
{
if(st >= a && dr<= b) maxim2 = max(maxim2, maxim[ind]);
else
{
int mij = (st+dr)/2;
if(a <= mij) f1(ind*2, st, mij);
if(b > mij) f1(ind*2+1, mij+1,dr);
}
}
int main()
{
int i;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
a = i;
modif(1,1,n);
}
for(i=1;i<=m;i++)
{
f>>operatie>>a>>b;
if(operatie==1)
{
x = b;
modif(1,1,n);
}
else
{
maxim2 = 0;
f1(1,1,n);
g<<maxim2<<endl;
}
}
return 0;
}