Pagini recente » Cod sursa (job #116138) | Cod sursa (job #1206696) | Cod sursa (job #1399811) | Cod sursa (job #1735500) | Cod sursa (job #1219556)
#include<fstream>
#include<algorithm>
using namespace std;
int mijl,n,m,i,x,y,sol,a[400009],k;
void update(int st, int dr , int nod)
{
if (st==dr) a[nod]=y;
else
{
mijl = (st+dr) / 2;
if (x<=mijl) update(st , mijl , nod*2);
else
update(mijl+1,dr,nod*2+1);
a[nod]=max(a[2*nod],a[2*nod+1]);
}
}
void query (int st , int dr , int nod)
{
if ((st>=x) && (dr<=y)) sol=max(sol,a[nod]);
else
{
int mijl=(st+dr) /2;
if (x<=mijl) query (st,mijl,2*nod);
if (y>mijl) query (mijl+1, dr , nod *2+1);
}
}
int main()
{
ifstream cin("arbint.in");
ofstream cout("arbint.out");
cin>>n>>m;
for (i=1 ; i<=n ; i++) {
cin>>y;
x=i;
update(1,n,1);
}
while (m--) {
cin>> k>>x>>y;
if (k==0) {
sol=0;
query(1,n,1);
cout<<sol<<"\n";
}
else
update(1,n,1);
}
return 0 ;
cin.close();
cout.close();
}