Pagini recente » Rating Alex cristi (alexcristi89) | Cod sursa (job #222041) | Cod sursa (job #233944) | Cod sursa (job #2303206) | Cod sursa (job #2236353)
#include <bits/stdc++.h>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
vector<int> aint;
int n,z,m,cod,a,b,answer(int,int,int);
int main()
{
f>>n>>m;
z=1;
while(z<n)z*=2;
aint = vector<int>(2*z,0);
z--;
for(int i=1;i<=n;i++)
f>>aint[z+i];
for(int i=z;i>=1;i--)
aint[i]=max(aint[2*i],aint[2*i+1]);
n=z+1;
for(;m;m--)
{
f>>cod>>a>>b;
if(cod==0)
g<<answer(1,1,n)<<'\n';
else
{
a+=z;
aint[a]=b;
for(a/=2;a;a/=2)
aint[a]=max(aint[2*a],aint[2*a+1]);
}
}
return 0;
}
int answer(int nod,int A,int B)
{
if(A>b||a>B)return 0;
if(a<=A&&B<=b)return aint[nod];
int C=(A+B)/2;
return max(answer(2*nod,A,C),answer(2*nod+1,C+1,B));
}