Pagini recente » Cod sursa (job #2664476) | Cod sursa (job #1961286) | Cod sursa (job #1934676) | Cod sursa (job #492213) | Cod sursa (job #1194342)
#include<fstream>
#include<algorithm>
using namespace std;
int i,n,m,aux,x,y,arb[400004],rs;
void update(int left, int right, int nod)
{
if(left==right) arb[nod]=y;
else {
int pivot=(left+right)/2;
if(x<=pivot) update(left,pivot,2*nod);
else update(pivot+1,right,2*nod+1);
arb[nod]=max(arb[2*nod],arb[2*nod+1]);
}
}
void query(int left, int right, int nod)
{
if(left>=x && right<=y) rs=max(rs,arb[nod]);
else {
int pivot=(left+right)/2;
if(x<=pivot) query(left,pivot,2*nod);
if(y>pivot) query(pivot+1,right,2*nod+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>>aux>>x>>y;
if(aux==0) rs=0,query(1,n,1),cout<<rs<<'\n';
else update(1,n,1);
}
return 0;
}