Pagini recente » Cod sursa (job #2652579) | Cod sursa (job #2771858) | Cod sursa (job #2370932) | Cod sursa (job #1385409) | Cod sursa (job #185823)
Cod sursa(job #185823)
using namespace std;
#include <cstdio>
#include <algorithm>
#include <string>
#include <cmath>
#define N 100001
#define sqr 256
int x[N], b[sqr];
int n,m;
inline void update(int p, int v)
{
x[p]=v;
int i;
for(i=max(p-sqr, 1); i<= min( p+sqr, n);++i)
b[i/sqr]=max(b[i/sqr], x[i]);
}
inline int query(int l, int r)
{
int sol=0,i;
for(i=l;i<= min(r, l+sqr); ++i) sol=max(x[i], sol);
for(i=max(r-sqr, l); i<=r; ++i) sol=max(x[i], sol);
for(i=l/sqr+1;i<=r/sqr;++i) sol=max(b[i], sol);
return sol;
}
int main()
{
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
scanf("%d %d\n", &n,&m);
int i,v;
for(i=1;i<=n;++i){scanf("%d ", &v);update(i,v);}
int t, p, q;
while(m--)
{
scanf("%d %d %d\n", &t, &p, &q);
if(t==0) printf("%d\n", query(p, q));
else update(p,q);
}
return 0;
}