Pagini recente » Cod sursa (job #3162400) | Cod sursa (job #436357) | Cod sursa (job #2819014) | Cod sursa (job #1943966) | Cod sursa (job #2863707)
#include <fstream>
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int heap[400002];
int x,y,maxi,n,k;
void update (int nod,int beg, int en, int val,int pos)
{
if (beg==en)
{
heap[nod]=val;
return ;
}
else
{
int mij=(beg+en)/2;
int st=2*nod;
int dr=st+1;
if (pos<=mij)
update (st,beg,mij,val,pos);
else
update (dr,mij+1,en,val,pos);
heap[nod]=max(heap[st],heap[dr]);
}
}
void query (int nod, int beg, int en)
{
if (x<=beg && y>=en)
{
maxi=max(maxi,heap[nod]);
}
else
{
int mij=(beg+en)/2;
int st=2*nod;
int dr=st+1;
if (x<=mij)
query (st,beg,mij);
if (y>mij)
query (dr,mij+1,en);
}
}
int main()
{
cin>>n>>k;
for (int i=1;i<=n;i++)
{
int val;
cin>>val;
update (1,1,n,val,i);
}
for (int i=1;i<=k;i++)
{
bool c;
cin>>c>>x>>y;
maxi=0;
if (c==1)
{
update (1,1,n,y,x);
}
else
{
query(1,1,n);
cout<<maxi<<'\n';
}
}
}