Pagini recente » Cod sursa (job #57592) | Cod sursa (job #2080901) | Cod sursa (job #1950075) | Cod sursa (job #190699) | Cod sursa (job #108638)
Cod sursa(job #108638)
var v:array[0..1000] of byte;
min,max,sub,nr:longint;
s,s1:string;
c,p:integer;
f,g:text;
procedure insereaza(k:longint);
begin
if k>=max then begin sub:=max; max:=k; end
else if k>sub then sub:=k;
if k<min then min:=k
else if min=0 then min:=k;
if v[k]=0 then v[k]:=1;
end;
procedure cauta(k:longint);
begin
if v[k]=1 then writeln(g,1)
else writeln(g,0);
end;
procedure sterge(k:longint);
var i:longint;
begin
if v[k]=0 then writeln(g,-1)
else v[k]:=0;
if k=max then
begin
i:=k;
while v[i]=0 do dec(i);
max:=i;
end;
if k=min then
begin
i:=k;
while v[i]=0 do dec(i);
min:=i;
end;
if k=sub then
begin
i:=k;
while v[i]=0 do dec(i);
sub:=i;
end;
end;
begin
assign(f,'zeap.in');
reset(f);
assign(g,'zeap.out');
rewrite(g);
min:=0; max:=0; sub:=0; nr:=0;
while not seekeof(f) do
begin
readln(f,s);
if s[1]<>'M' then
begin
p:=3;
while s[p]<>' ' do inc(p);
s1:=copy(s,3,p-3);
val(s1,nr,c);
case s[1] of
'I': insereaza(nr);
'S': sterge(nr);
'C': cauta(nr);
end;
end
else
if s[2]='A' then writeln(g,max-min)
else writeln(g,max-sub);
end;
close(f);
close(g);
end.