Pagini recente » Cod sursa (job #1952795) | Cod sursa (job #2938571) | Cod sursa (job #357956) | Cod sursa (job #1808675) | Cod sursa (job #426261)
Cod sursa(job #426261)
type lista=^nod;
nod=record nr:longint; adr:lista; end;
const modul=2000000;
var v:array[1..2000] of lista;
x, n, i, o, y: longint;
p, r:lista;
ok:boolean;
f, g:text;
begin
assign (f, 'hashuri.in'); reset(f);
assign (g, 'hashuri.out'); rewrite (g);
read (f, n);
for i := 1 to n do
begin
read (f, o, x);
y:= x mod modul;
case o of
1: begin
if v[y] = nil then
begin
new (v[y]); v[y]^.nr:=x; v[y]^.adr:=nil;
end
else
begin
ok:= true; p:=v[y]; {ok= true adica e adevarat ca numarul nu exista in sir}
while (ok=true) and (p^.adr<>nil) do
begin
if p^.nr=x then ok := false;
p:=p^.adr;
end;
if p^.nr=x then ok:=false;
if ok = true then begin new(r); p^.adr:=r; r^.nr:=x; r^.adr:=nil; end;
end;
end;
2: begin
p:=v[x mod modul];
ok:=false; {ok=true adica s-a eliminat elementul}
if p <> nil then
begin
if v[x mod modul]^.nr = x then
begin
r:= v[x mod modul];
v[x mod modul] := v[x mod modul]^.adr;
dispose(r); ok:= true;
end;
while (p^.adr <> nil) and (ok=false) do
begin
if p^.adr^.nr = x then begin r:=p^.adr; p^.adr:=p^.adr^.adr; dispose(r); ok:=true; end;
p:=p^.adr;
end;
end;
end;
3: begin
ok:= false;
p:= v[x mod modul];
while (ok=false) and (p<> nil) do
begin
if p^.nr=x then ok := true;
p:=p^.adr;
end;
if ok = true then writeln (g, '1') else writeln (g, '0');
end;
end;
end;
close (f); close (g);
end.