Pagini recente » Cod sursa (job #2230021) | Cod sursa (job #2839029) | Cod sursa (job #2593362) | Cod sursa (job #2988742) | Cod sursa (job #1298815)
#include<fstream>
using namespace std;
long a,b,t[400066],n,m,x,p,ma,c;
void u(long no,long l,long r)
{
if(l==r)
{
t[no]=x;
return;
}
long d=(l+r)/2;
if(p<=d)
u(2*no,l,d);
else u(2*no+1,d+1,r);
if(t[2*no+1]>t[2*no])
t[no]=t[2*no+1];
else t[no]=t[2*no];
}
void q(long no,long l,long r)
{
if(a<=l&&r<=b)
{
if(ma<t[no])
ma=t[no];
return;
}
long d=(l+r)/2;
if(a<=d)
q(2*no,l,d);
if(d<b)
q(2*no+1,d+1,r);
}
int main()
{
ifstream f("arbint.in");
ofstream g("arbint.out");
f>>n>>m;
long i;
for(i=1;i<=n;i++)
{
f>>x;
p=i;
u(1,1,n);
}
for(i=1;i<=m;i++)
{
f>>c>>a>>b;
if(c)
{
p=a;
x=b;
u(1,1,n);
}
else
{
ma=-1;
q(1,1,n);
g<<ma<<"\n";
}
}
f.close();
g.close();
return 0;
}