Pagini recente » Cod sursa (job #2633866) | Cod sursa (job #2969050) | Cod sursa (job #1754771) | Cod sursa (job #1490864) | Cod sursa (job #1795095)
#include <bits/stdc++.h>
using namespace std;
//ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m,ans,arb[400010];
char D;
int number;
inline int get_nr()
{
number = 0;
D = getc(stdin);
while(!isdigit(D))
{
D = getc(stdin);
}
while (isdigit(D))
{
number = number * 10 + D - '0';
D = getc(stdin);
}
return number;
}
int main()
{
freopen("arbint.in", "r", stdin);
//f>>n>>m;
n=get_nr();
m=get_nr();
for(int i=1;i<=n;++i)
{
int x;
x=get_nr();
int poz = i;
arb[poz += n - 1] = x;
for(poz >>= 1; poz; poz >>= 1)
arb[poz] = max(arb[poz << 1], arb[poz << 1 | 1]);
}
for(int i=1;i<=m;++i)
{
int p,x,y;
//f>>p>>x>>y;
p=get_nr();
x=get_nr();
y=get_nr();
if(p)
{
arb[x += n - 1] = y;
for(x >>= 1; x; x >>= 1)
arb[x] = max(arb[x << 1], arb[x << 1 | 1]);
}
else
{
int rez = -1;
for(x += n - 1, y += n; x < y; x >>= 1, y >>= 1)
{
if(x & 1)
rez = max(rez, arb[x++]);
if(y & 1)
rez = max(rez, arb[--y]);
}
g << rez << '\n';
}
}
return 0;
}