Pagini recente » Cod sursa (job #2454806) | Cod sursa (job #2133557) | Cod sursa (job #497862) | Cod sursa (job #850796) | Cod sursa (job #545641)
Cod sursa(job #545641)
var v:array[1..200001] of longint;
n,m,i,a,b:longint;
be,ki:text;
br:array[1..200000] of longint;
br_n:longint;
function apa( i:longint ):longint;
begin
apa := i div 2;
end;
function bfiu( i:longint ):longint;
begin
bfiu := i*2;
end;
function jfiu( i:longint ):longint;
begin
jfiu := i*2+1;
end;
procedure felvisz( i:longint );
var p:longint;
begin
while (i<>1)and( v[apa(i)] > v[i] ) do
begin
p := v[i];
v[i] := v[apa(i)];
v[apa(i)] := p;
i := apa(i);
end;
end;
function mini(a,b:longint):longint;
begin
if v[a] < v[b] then mini := a else mini := b;
end;
procedure levisz( i:longint );
var m,p:longint;
begin
m:=mini( bfiu(i), jfiu(i) );
while ( m <= n )
and ( v[m] < v[i] ) do
begin
p := v[i];
v[i] := v[m];
v[m] := p;
i := m;
m := mini( bfiu(i), jfiu(i) );
end;
end;
procedure berak( x:longint );
begin
inc(n);
inc(br_n);
br[br_n] := x;
v[n] := x;
felvisz(n);
end;
procedure torol( i:longint );
begin
v[i] := v[n];
dec(n);
levisz(i);
end;
function min():longint;
begin
min := v[1];
end;
function find( x:longint ):longint;
var i:longint;
begin
for i:=1 to n+1 do
if v[i] = x then break;
if i <= n then find := i else find := 0;
end;
begin
assign(be,'heapuri.in');
assign(ki,'heapuri.out');
reset(be);
rewrite(ki);
readln(be,m);
for i:=1 to m do
begin
read(be,a);
if (a=1) or (a=2) then read(be,b);
case a of
1: berak(b);
2: torol( find(br[b]) );
3: writeln(ki, min());
end;
end;
close(ki);
end.