Pagini recente » Cod sursa (job #1097425) | Cod sursa (job #22895) | Cod sursa (job #2877907) | Cod sursa (job #2619072) | Cod sursa (job #116717)
Cod sursa(job #116717)
var fi,fo:text;
s:string[15];
zeap:array[1..200000]of longint;
ins:array[1..100000000]of byte;
poz:array[1..100000000]of longint;
ct:longint;
function solv(var nr:longint; s:string):string[3];
var numar:string[10];
i:byte;
e:integer;
begin
if s[1]='M' then solv:=s
else
begin
solv:=s[1];
numar:='';
for i:=3 to length(s) do
numar:=numar+s[i];
val(numar,nr,e);
end;
end;
procedure insereaza(vl:longint);
begin
if ins[vl]<>1 then
begin
inc(ct);
zeap[ct]:=vl;
ins[vl]:=1;
poz[vl]:=ct;
end;
end;
procedure sterge(vl:longint);
begin
if poz[vl]=0 then writeln(fo,'-1')
else
begin
zeap[poz[vl]]:=zeap[ct];
dec(ct);
end;
end;
function cauta(vl:longint):integer;
begin
if ins[vl]=0 then cauta:=0
else cauta:=1;
end;
function max:longint;
var maxi,min,i:longint;
begin
if ct<2 then max:=-1
else
begin
maxi:=-maxint;
min:=maxint;
for i:=1 to ct do
begin
if zeap[i]>maxi then maxi:=zeap[i];
if zeap[i]<min then min:=zeap[i];
end;
max:=maxi-min;
end;
end;
function min:longint;
var min1,min2,i:longint;
begin
if ct<2 then min:=-1
else
begin
min1:=maxint;
min2:=maxint;
for i:=1 to ct do
if min1>zeap[i] then min1:=zeap[i]
else
if min2>zeap[i] then min2:=zeap[i];
min:=min2-min1;
end;
end;
procedure Read_fi;
var op:string[3];
nr:longint;
begin
while not eof(fi) do
begin
readln(fi,s);
op:=solv(nr,s);
if op='I' then insereaza(nr)
else
if op='S' then sterge(nr)
else
if op='C' then writeln(fo,cauta(nr))
else
if op='MAX' then writeln(fo,max)
else writeln(fo,min);
end;
end;
begin
assign(fi,'zeap.in'); reset(fi);
assign(fo,'zeap.out'); rewrite(fo);
ct:=0;
Read_fi;
close(fi);
close(fo);
end.