Pagini recente » Cod sursa (job #1588757) | Cod sursa (job #1345693) | Cod sursa (job #1852922) | Cod sursa (job #1081549) | Cod sursa (job #982920)
Cod sursa(job #982920)
#include <stdio.h>
int mx[1<<19];
int p,x,y;
void insert(int a,int i,int j){
if(i==j){
mx[a]=x;
return;
}
int m=(i+j)>>1;
if(p>m) insert((a<<1)+1,m+1,j);
else insert(a<<1,i,m);
mx[a]=mx[a<<1];
if(mx[(a<<1)+1]>mx[a]) mx[a]=mx[(a<<1)+1];
return;
}
int query(int a,int i,int j){
if(x<=i&&j<=y)
return mx[a];
int m=(i+j)>>1,a1=0,a2=0;
if(x<=m) a1=query(a<<1,i,m);
if(y>m) a2=query((a<<1)+1,m+1,j);
if(a2>a1) a1=a2;
return a1;
}
int main()
{
FILE *f=freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
int n,m;
char a[2000010];
fread(a,1,2000010,f);
n=m=0;
int q=0;
while(a[q]!=' ')
n+=n*9+a[q++]-'0'; q++;
while(a[q]!='\n')
m+=m*9+a[q++]-'0'; q++;
int x1,y1,cd;
for(int i=1;i<=n;i++){
x1=0;
while(a[q]!=' '&&a[q]!='\n')
x1+=x1*9+a[q++]-'0'; q++;
x=x1,p=i;
insert(1,1,n);
}
for(int t=1;t<=m;t++){
x1=y1=0;
cd=a[q++]-'0'; q++;
while(a[q]!=' ')
x1+=x1*9+a[q++]-'0'; q++;
while(a[q]!='\n')
y1+=y1*9+a[q++]-'0'; q++;
if(cd){
x=y1,p=x1;
insert(1,1,n);
}
else{
x=x1,y=y1;
printf("%d\n",query(1,1,n));
}
}
return 0;
}