Pagini recente » Cod sursa (job #306801) | Cod sursa (job #2688320) | Cod sursa (job #2604816) | Cod sursa (job #2475127) | Cod sursa (job #2723349)
#include <bits/stdc++.h>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
const int NM=1e5+5;
int poz,val,x,y,ai[4*NM];
void Update(int nod,int st,int dr)
{ if(st==dr)
{ ai[nod]=val;
return;
}
int mij=(st+dr)/2;
if(poz<=mij)
Update(2*nod,st,mij);
else
Update(2*nod+1,mij+1,dr);
ai[nod]=max(ai[2*nod],ai[2*nod+1]);
}
int Query(int nod,int st,int dr)
{ if(st>=x && dr<=y)
return ai[nod];
int mij=(st+dr)/2;
int maxSt=0,maxDr=0;
if(x<=mij)
maxSt=Query(2*nod,st,mij);
if(y>mij)
maxDr=Query(2*nod+1,mij+1,dr);
return max(maxSt,maxDr);
}
int main()
{ int n,m;
f>>n>>m;
for(int a,i=1; i<=n; i++)
{ f>>a;
poz=i;
val=a;
Update(1,1,n);
}
for(int t; f>>t>>x>>y;)
{ if(!t)
g<<Query(1,1,n)<<'\n';
else
{ poz=x;
val=y;
Update(1,1,n);
}
}
g.close();
return 0;
}