Pagini recente » Cod sursa (job #2666754) | Cod sursa (job #1418896) | Cod sursa (job #2410521) | Cod sursa (job #1399397) | Cod sursa (job #195899)
Cod sursa(job #195899)
program arbint;
const Nmax=100100;
var
v:array[0..Nmax]of longint;
stdin,stdout:text;
a,b,x,i,n,m:longint;
start, finish, val, pos, maxim:longint;
arb:array[0..400100]of longint;
procedure querry(nod,left,right:longint);
var mid:longint;
begin
if (start<=left) and (right<=finish)then
begin
if ( maxim < arb[nod] )then
maxim := arb[nod];
end
else
begin
mid:=(left+right)div 2;
if (start<=mid)then
querry(2*nod,start,mid);
if (mid<finish)then
querry(2*nod+1,mid+1,finish);
end;
end;
function max(a,b:integer):integer;
begin
maxim:=0;
if (a>b)then
maxim:=a
else
maxim:=b;
end;
procedure update(nod,left,right:longint);
var mid:longint;
begin
mid:=(left+right)div 2;
if (left=right)then
begin
arb[nod]:=val;
//return;
end
else
begin
if (pos<=mid)then
update(2*nod,left,mid)
else
begin
update(2*nod+1,mid+1,right);
end;
arb[nod] := max( arb[2*nod], arb[2*nod+1] );
end;
end;
procedure make;
var i:longint;
begin
for i:=1 to n do
begin
pos:=i;
val:=v[i];
update(1,1,n);
end;
end;
begin
start:=0;finish:=0;pos:=0;val:=0;
assign(stdin,'arbint.in');reset(stdin);
assign(stdout,'arbint.out');rewrite(stdout);
read(stdin,n,m);
for i:=1 to n do
read(stdin,v[i]);
//for i:=0 to 400100 do arb[i]:=0;
make;
for i:=1 to m do
begin
read(stdin,x,a,b);
if (x=0)then
begin
maxim:=-1;
start:=a;
finish:=b;
querry(1,1,n);
writeln(stdout,maxim);
end
else
begin
pos:=a;
val:=b;
update(1,1,n);
end;
end;
close(stdin);
close(stdout);
end.