Pagini recente » Cod sursa (job #2126664) | Cod sursa (job #2232541) | Cod sursa (job #935237) | Cod sursa (job #2861474) | Cod sursa (job #2190183)
#include <bits/stdc++.h>
using namespace std;
int n,m,i,j,val,b,t[2000000],a,c,M;
void update(int nod,int x,int y)
{
if (x==y) t[nod]=val;
else
{
int mid=(x+y)/2;
if (i>mid) update(nod*2+1,mid+1,y);
else update(nod*2,x,mid);
t[nod]=max(t[nod*2],t[nod*2+1]);
}
}
void maxim(int nod,int x,int y)
{
if (a<=x && y<=b){ if (M<t[nod]) M=t[nod]; }else
{
int mid=(x+y)/2;
if (mid>=a) maxim(nod*2,x,mid);
if (mid<b) maxim(nod*2+1,mid+1,y);
}
}
int main()
{
ifstream fin("arbint.in");
ofstream fout("arbint.out");
fin>>n>>m;
for (i=1;i<=n;i++)
{
fin>>val;
update(1,1,n);
}
for (j=1;j<=m;j++)
{
fin>>c>>a>>b;
if (c==1) {i=a; val=b; update(1,1,n);} else
{
M=0;
maxim(1,1,n);
fout<<M<<"\n";
}
}
return 0;
}