Pagini recente » Cod sursa (job #3137162) | Cod sursa (job #2406465) | Cod sursa (job #2179879) | Cod sursa (job #22398) | Cod sursa (job #862292)
Cod sursa(job #862292)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m,A[1<<19],op,a,b,poz,x;
void up(int nod,int st,int dr)
{
int mij;
if (st>=poz && poz>=dr)
{
A[nod]=x;
return;
}
mij=(st+dr)/2;
if (poz<=mij) up(2*nod,st,mij);
else up(2*nod + 1, mij+1,dr);
if (A[2*nod]<A[2*nod+1]) A[nod]=A[2*nod+1];
else A[nod]=A[2*nod];
}
int q(int nod,int st,int dr)
{
int mij,x1=0,x2=0;
if (st>=a && b>=dr)
return A[nod];
mij=(st+dr)/2;
if (a<=mij) x1=q(2*nod,st,mij);
if (b>mij) x2=q(2*nod + 1, mij+1,dr);
if (x2>x1) x1=x2;
return x1;
}
int main()
{
int i;
f>>n>>m;
for (i=1;i<=n;i++) {
f>>x;
poz=i;
up(1,1,n);
}
for (i=1;i<=m;i++) {
f>>op>>a>>b;
if (op==0) g<<q(1,1,n)<<"\n";
else
{
poz=a;
x=b;
up(1,1,n);
}
}
return 0;
}