Cod sursa(job #249829)
var z:array [1..300000] of longint;
i:longint;
s:string;
f,g:text;
procedure insereaza(s:string);
var cod:integer;
begin
i:=i+1;
val(s,z[i],cod);
end;
procedure sterge(s:string);
var cod:integer;
j,n:longint;
ok:boolean;
begin
val(s,n,cod);
ok:=false;
for j:=1 to i do
if ok then z[j-1]:=z[j]
else
if z[j]=n then ok:=true;
if ok then i:=i-1
else writeln(g,-1);
end;
procedure cauta(s:string);
var cod:integer;
n,j:longint;
ok:boolean;
begin
val(s,n,cod);
ok:=false;
j:=0;
while (j<i) and (not ok) do
begin
j:=j+1;
if z[j]=n then ok:=true;
end;
if ok then writeln(g,1)
else writeln(g,0);
end;
procedure maxd;
var j,min,max:longint;
begin
if i<2 then writeln(g,-1)
else
begin
min:=z[1];
max:=z[1];
for j:=2 to i do
begin
if min>z[j] then min:=z[j];
if max<z[j] then max:=z[j];
end;
writeln(g,max-min);
end;
end;
procedure mind;
var j,k,min:longint;
begin
min:=z[1]-z[2];
if min<0 then min:=-min;
for j:=1 to i do
for k:=1 to i do
if (z[j]-z[k]>0) and (min>z[j]-z[k]) then min:=z[j]-z[k];
writeln(g,min);
end;
begin
assign(f,'zeap.in');
assign(g,'zeap.out');
reset(f);
rewrite(g);
i:=0;
while not eof(f) do
begin
readln(f,s);
case s[1] of
'I':insereaza(copy(s,3,length(s)));
'S':sterge(copy(s,3,length(s)));
'C':cauta(copy(s,3,length(s)));
'M':if s='MAX' then maxd
else mind;
end;
end;
close(f);
close(g);
end.