Pagini recente » Cod sursa (job #323269) | Cod sursa (job #975552) | Cod sursa (job #2998657) | Cod sursa (job #1966953) | Cod sursa (job #1975889)
#include <fstream>
#include <cstdio>
#include <cmath>
#define Nmax 100001
using namespace std;
ofstream g("arbint.out");
int V[Nmax*2],N,n,m,x,y,t;
void up(int x,int val)
{
x+=N;
V[x] = val;
while (x>1)
{
x/=2;
V[x] = max(V[x*2],V[x*2+1]);
}
}
int query(int a,int b)
{
int rez = 0;
a+=N;
b+=N;
while (a<b)
{
rez = max(rez,max(V[a],V[b]));
a=(a+1)/2;
b=(b-1)/2;
}
return rez;
}
int main()
{
freopen("arbint.in","r",stdin);
scanf("%d%d",&n,&m);
N = 1<<(int)log2(n);
if (N<n)
N *= 2;
N--;
for (int i=1;i<=n;i++)
{
scanf("%d",&x);
up(i,x);
}
for (int i=1;i<=m;i++)
{
scanf("%d%d%d",&t,&x,&y);
if (t==0)
g<<query(x,y)<<'\n';
else
up(x,y);
}
return 0;
}