Pagini recente » Cod sursa (job #2542571) | Cod sursa (job #1376757) | Cod sursa (job #965171) | Cod sursa (job #2563229) | Cod sursa (job #410911)
Cod sursa(job #410911)
#include<fstream.h>
int a,b,r,v[100100],ai[400400];
void update(int nod, int st, int dr)
{
if(st==dr)
ai[nod]=v[a];
else
{
int m=(st+dr)>>1,ls=(nod<<1),rs=1+ls;
if(a<=m)
update(ls,st,m);
else
update(rs,m+1,dr);
if(ai[rs]>ai[ls])
ai[nod]=ai[rs];
else
ai[nod]=ai[ls];
}
}
void query(int nod, int st, int dr)
{
if(a<=st&&dr<=b)
{
if(r<ai[nod])
r=ai[nod];
}
else
{
int m=(st+dr)>>1,ls=(nod<<1),rs=1+ls;
if(a<=m)
query(ls,st,m);
if(m<b)
query(rs,m+1,dr);
}
}
int main()
{
int op,n,m;
ifstream f("arbint.in");
ofstream g("arbint.out");
f>>n>>m;
for(a=1;a<=n;a++)
{
f>>v[a];
update(1,1,n);
}
while(m--)
{
f>>op>>a>>b;
if(!op)
{
r=-1;
query(1,1,n);
g<<r<<'\n';
}
else
{
v[a]=b;
update(1,1,n);
}
}
return 0;
}