Pagini recente » Rating Flavius Dumitrascu (flaviusdumi) | Cod sursa (job #814671) | Cod sursa (job #950770) | Cod sursa (job #3163062) | Cod sursa (job #1007784)
#include<cstdio>
#include<algorithm>
#define NMAX 100000+5
#define KMAX (1<<17+5)
using namespace std;
int N,M,K,A,B;
int AI[KMAX];
void update(int i,int x)
{
int t;
AI[K+i-1]=x;
for(t=(K+i-1)/2;t;t>>=1) AI[t]=max(AI[2*t],AI[2*t+1]);
}
int query(int nod,int lo,int hi)
{
int md=(lo+hi)/2;
if(A<=lo && hi<=B) return AI[nod];
if(hi<A || B<lo) return 0;
return max(query(2*nod,lo,md),query(2*nod+1,md+1,hi));
}
int main()
{
int i,t,a,b;
freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
scanf("%d%d",&N,&M);
for(K=1;K<N;K<<=1);
for(i=1;i<=N;i++) scanf("%d",&AI[K+i-1]);
for(i=K-1;i>=1;--i) AI[i]=max(AI[2*i],AI[2*i+1]);
//for(i=1;i<=2*K-1;i++) printf("%d ",AI[i]); printf("\n");
for(;M;--M)
{
scanf("%d%d%d",&t,&a,&b);
if(t==1)
{
update(a,b);
//for(i=1;i<=2*K-1;i++) printf("%d ",AI[i]); printf("\n");
continue;
}
A=a; B=b;
printf("%d\n",query(1,1,K));
}
return 0;
}