Pagini recente » Cod sursa (job #1855802) | Cod sursa (job #1276450) | Cod sursa (job #987067) | Cod sursa (job #2136046) | Cod sursa (job #294749)
Cod sursa(job #294749)
#include<fstream.h>
#define nx 100005
int A[nx*5];
int max,a,b,poz,what;
inline int maxim (int x,int y)
{
if (x>y) return x;
return y;
}
void update (int nod,int st,int dr)
{
if (st==dr)
A[nod]=what;
else
{
int mij=(st+dr)/2;
if (poz<=mij)
update (nod*2,st,mij);
else
update (nod*2+1,mij+1,dr);
A[nod]=maxim (A[nod*2],A[nod*2+1]);
}
}
void query (int nod,int st,int dr)
{
if (a<=st && dr<=b)
{
if (A[nod]>max) max=A[nod];
}
else
{
int mij=(st+dr)/2;
if (a<=mij) query (nod*2,st,mij);
if (b>mij) query (nod*2+1,mij+1,dr);
}
}
int main()
{
ifstream be ("arbint.in");
ofstream ki ("arbint.out");
int n,m;
be>>n>>m;
int i,c;
for (i=1;i<=n;++i)
{
be>>what;
poz=i;
update(1,1,n);
}
for (;m;--m)
{
be>>c>>a>>b;
if (c==0)
{
max=-1;
query(1,1,n);
ki<<max<<'\n';
}
else
{
what=b;poz=a;
update(1,1,n);
}
}
be.close();
ki.close();
return 0;
}