Pagini recente » Cod sursa (job #1343489) | Cod sursa (job #852857) | Cod sursa (job #248280) | Cod sursa (job #409169) | Cod sursa (job #2110697)
#include <fstream>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int a[400004],pos,val,x,y;
int calc(int nod,int st,int dr)
{
int rez=0,mij=(st+dr)/2;
if(x<=st && dr<=y)
rez=a[nod];
if(x<=mij && a[nod*2]!=0)
rez=max(rez,calc(nod*2,st,mij));
if(mij<y && a[nod*2+1]!=0)
rez=max(rez,calc(nod*2+1,mij+1,dr));
return rez;
}
int act(int nod,int st,int dr)
{
if(st==dr && st==pos)
{
a[nod]=val;
return a[nod];
}
int mij=(st+dr)/2;
if(pos<=mij)
{
a[nod]=max(act(nod*2,st,mij),a[nod*2+1]);
return a[nod];
}
if(mij<pos)
{
a[nod]=max(a[nod*2],act(nod*2+1,mij+1,dr));
return a[nod];
}
}
int main()
{
int n,m,i,op;
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>x;
pos=i;
val=x;
act(1,1,n);
}
for(i=1;i<=m;i++)
{
fin>>op>>x>>y;
if(op==0)
{
fout<<calc(1,1,n)<<'\n';
}
else
{
pos=x;
val=y;
act(1,1,n);
}
}
return 0;
}