Pagini recente » Cod sursa (job #3188538) | Cod sursa (job #2829502) | Cod sursa (job #244312) | Cod sursa (job #1112827) | Cod sursa (job #1802950)
# include <stdio.h>
# include <bits/stdc++.h>
using namespace std;
# define fi cin
# define fo cout
# define x first
# define y second
# define ll long long
# define IOS ios_base :: sync_with_stdio(0);cin.tie(0)
# define p(v) cerr << #v << " = " << v << '\n'
# define p2(v) cerr << #v << " = " << (complex < int > (v.x,v.y)) << '\n'
# define vi vector < int >
# define vll vector < ll >
# define pii pair < int , int >
# define mp make_pair
# define CF
int main(void)
{
#ifdef CF
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
#endif // CF
srand(time(0));
fo << fixed << setprecision(7);
cerr << fixed << setprecision(7);
int n,m;
IOS;
fi>>n>>m;
static int t[1 << 20];
for (int i = n;i < n + n;++i)
fi>>t[i];
for (int i = n - 1;i;--i)
t[i] = max(t[i << 1],t[i << 1 | 1]);
while (m --)
{
int op;
fi>>op;
if (!op)
{
int l,r;
fi>>l>>r;
l += n - 1;r += n - 1;
int ans = 0;
for (;l <= r;l /= 2,r /= 2)
{
if (l & 1)
ans = max(ans,t[l++]);
if (!(r & 1))
ans = max(ans,t[r--]);
}
fo << ans << '\n';
}
else
{
int l,r;
fi>>l>>r;
t[l += n - 1] = r;
for (l /= 2;l >= 1;l /= 2)
t[l] = max(t[l << 1],t[l << 1 | 1]);
}
}
cerr << "Time elapsed :" << clock() * 1000.0 / CLOCKS_PER_SEC << " ms" << '\n';
return 0;
}