Pagini recente » Cod sursa (job #1471787) | Cod sursa (job #2232134) | Cod sursa (job #58737) | Cod sursa (job #1885752) | Cod sursa (job #1140919)
#include <fstream>
using namespace std;
fstream f("arbint.in", ios::in);
fstream g("arbint.out", ios::out);
int n,m,x[500050],uj,poz,a,b,q,w,e,maxi;
int update(int csp,int left,int right)
{
if (left==right)
{
x[csp]=uj;
return 0;
}
int k=(left+right)/2;
if (poz<=k)
update(csp*2,left,k);
else
update(csp*2+1,k+1,right);
x[csp]=max(x[csp*2],x[csp*2+1]);
}
int query(int csp,int left,int right)
{
if (a<=left && b>=right)
{
if (x[csp]>maxi)
maxi=x[csp];
return 0;
}
int k=(left+right)/2;
if (a<=k)
query(csp*2,left,k);
if (b>k)
query(csp*2+1,k+1,right);
}
int main()
{
f>>n>>m;
for (int i=1;i<=n;i++)
{
f>>uj;
poz=i;
update(1,1,n);
}
while (f>>q>>w>>e)
{
if (!q)
{
maxi=-1;
a=w;
b=e;
query(1,1,n);
g<<maxi<<"\n";
}
else
{
poz=w;
uj=e;
update(1,1,n);
}
}
}