Pagini recente » Cod sursa (job #1506674) | Cod sursa (job #1427375) | Cod sursa (job #1048302) | Cod sursa (job #2852831) | Cod sursa (job #343433)
Cod sursa(job #343433)
var n,x:longint;f,g:text;c:char;v:array[1..300000]of longint;
function caut(x:longint):longint;
var s,e,m:longint;
begin
s:=1;
e:=n;
while s<e do begin
m:=(s+e)div 2;
if v[m]=x then begin caut:=1;exit;end
else if v[m]>x then e:=m-1 else s:=m+1;
end;
if x<>v[s] then caut:=0 else caut:=1;
end;
procedure ins(x:longint);
var i,s,e,m:longint;
begin
if n=0 then begin n:=1;v[1]:=x;exit;end;
s:=1;
e:=n;
while s<e do begin
m:=(s+e)div 2;
if v[m]=x then exit
else if v[m]>x then e:=m-1 else s:=m+1;
end;
if x>v[s] then inc(s);
for i:=s to n do v[i+1]:=v[i];
inc(n);v[s]:=x;
end;
procedure del(x:longint);
var i,s,e,m:longint;
begin
s:=1;
e:=n;
while s<e do begin
m:=(s+e)div 2;
if v[m]=x then begin dec(n);for i:=m to n do v[i]:=v[i+1];exit;end
else if v[m]>x then e:=m-1 else s:=m+1;
end;
if x=v[m]then begin dec(n);for i:=m to n do v[i]:=v[i+1];exit;end;
writeln(g,-1);
end;
procedure min;
var i,m:longint;
begin
m:=v[2]-v[1];
for i:=3 to n do if v[i]-v[i-1]<m then m:=v[i]-v[i-1];
writeln(g,m);
end;
begin
assign(f,'zeap.in' );reset (f);
assign(g,'zeap.out');rewrite(g);
while not eof(f) do begin
read(f,c);
case c of
'I':begin read(f,x);ins(x);readln(f);end;
'S':begin read(f,x);del(x);readln(f);end;
'C':begin read(f,x);writeln(g,caut(x));readln(f);end;
'M': if n<2 then writeln(g,-1)else begin
readln(f,c);
case c of
'I':min;
'A':writeln(g,v[n]-v[1]);
end;
end;
end;
end;
close(f);
close(g);
end.