Pagini recente » Cod sursa (job #2514913) | Cod sursa (job #1391470) | Cod sursa (job #87083) | Cod sursa (job #1289164) | Cod sursa (job #2203780)
#include <bits/stdc++.h>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
const int N = 1<<18;
int n,m,o,x,y,z,i,a[N],get_max(int,int,int);
int main()
{
f>>n>>m;
z=1;
while(z<n)
z<<=1;
z--;
for(i=1;i<=n;i++)
f>>a[z+i];
for(i=z;i>=1;i--)
a[i]=max(a[2*i],a[2*i+1]);
for(;m;m--)
{
f>>o>>x>>y;
if(o==0)
g<<get_max(1,1,z+1)<<"\n";
else
{
a[z+x]=y;
for(i=(z+x)/2;i>=1;i/=2)
a[i]=max(a[2*i],a[2*i+1]);
}
}
return 0;
}
int get_max(int nod,int st,int dr)
{
if(x>dr||y<st)
return 0;
if(x<=st&&dr<=y)
return a[nod];
int mi=(st+dr)/2;
return max(get_max(2*nod,st,mi),get_max(2*nod+1,mi+1,dr));
}