Pagini recente » Cod sursa (job #95041) | Cod sursa (job #2037405) | Cod sursa (job #2904285) | Cod sursa (job #2220518) | Cod sursa (job #2170705)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
#define nmax 100000
int arb[4*nmax],poz,val,x,y,minim;
void ad(int inc,int fi,int cat)
{
if(inc==fi)
arb[cat]=val;
else
{
if(poz<=(inc+fi)/2)
ad(inc,(inc+fi)/2,cat*2);
else
ad((inc+fi)/2+1,fi,cat*2+1);
arb[cat]=max(arb[cat*2],arb[cat*2+1]);
}
}
void querry(int inc,int fi,int cat)
{
if(x<=inc and fi<=y)
minim=max(minim,arb[cat]);
else
{
int mij=(inc+fi)/2;
if(x<=mij)
querry(inc,mij,cat*2);
if(y>mij)
querry(mij+1,fi,cat*2+1);
}
}
int main()
{
int n,m,i,tip;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>val;
poz=i;
ad(1,n,1);
}
for(i=1;i<=m;i++)
{
f>>tip>>x>>y;
if(tip==1)
{
poz=x;
val=y;
ad(1,n,1);
}
else
{
minim=0;
querry(1,n,1);
g<<minim<<'\n';
}
}
return 0;
}