Pagini recente » Cod sursa (job #236271) | Cod sursa (job #2894768) | Cod sursa (job #2137024) | Cod sursa (job #1937137) | Cod sursa (job #174825)
Cod sursa(job #174825)
var op,x,y,i,a,b,n,m,max,poz,val:longint;
arb:array[1..300001] of longint;
function maxim(i,j:longint):longint;{inline;}
begin
if i>j then maxim:=i
else maxim:=j;
end;
procedure refresh(nod,li,ls:longint);
var mij:longint;
begin
if li=ls then arb[nod]:=val
else
begin
mij:=(li+ls) div 2;
if poz<=mij then refresh(2*nod,li,mij)
else refresh(2*nod+1,mij+1,ls);
arb[nod]:=maxim(arb[2*nod],arb[2*nod+1]);
end;
end;
procedure ask(nod,li,ls:longint);
var mij:longint;
begin
if (x<=li)and(y>=ls) then begin if arb[nod]>max then max:=arb[nod];end
else
begin
mij:=(li+ls) div 2;
if x<=mij then ask(2*nod,li,mij);
if mij<y then ask(2*nod+1,mij+1,ls);
end;
end;
begin
assign(input,'arbint.in'); reset(input);
readln(n,m);
for i:=1 to n do
begin
read(val);
poz:=i;
refresh(1,1,n);
end;
assign(output,'arbint.out'); rewrite(output);
for i:=1 to m do
begin
readln(op,a,b);
if op=0 then
begin
max:=-1;
x:=a;
y:=b;
ask(1,1,n);
writeln(max);
end
else
begin
val:=b;
poz:=a;
refresh(1,1,n);
end;
end;
close(input);
close(output);
end.