Pagini recente » Cod sursa (job #521002) | Cod sursa (job #1085703) | boji_round2 | Cod sursa (job #1473957) | Cod sursa (job #494005)
Cod sursa(job #494005)
#include<fstream>
using namespace std;
const int N=100005;
int init[N],n,m,v[N],p1,p2;
void cstr(int st,int dr,int poz)
{if(st==dr)
{init[st]=poz;
return ;
}
int mijl=(st+dr)/2;
cstr(st,mijl,poz*2);
cstr(mijl+1,dr,poz*2+1);
}
void update(int poz,int val)
{int x=init[poz];
v[x]=val;
for(x/=2;x>0;x/=2)
v[x]=max(v[2*x],v[2*x+1]);
}
int query(int st,int dr,int poz)
{ if(p2<st||p1>dr)
return 0;
int x;
if(p1<=st&&dr<=p2)
return v[poz];
int mijl=(st+dr)/2;
return max(query(st,mijl,2*poz),query(mijl+1,dr,2*poz+1));
}
int main()
{ifstream fin("arbint.in");
ofstream fout("arbint.out");
fin>>n>>m;
int i,o,x;
cstr(1,n,1);
for(i=1;i<=n;++i)
{fin>>x;update(i,x);}
for(i=1;i<=m;++i)
{fin>>o>>p1>>p2;
if(o==0)
fout<<query(1,n,1)<<'\n';
else
update(p1,p2);
}
fin.close();
fout.close();
return 0;
}