Pagini recente » Cod sursa (job #2365370) | Cod sursa (job #2881320) | Cod sursa (job #2595980) | Monitorul de evaluare | Cod sursa (job #869692)
Cod sursa(job #869692)
type pnod=^nod;
nod = record
info: longint;
next: pnod;
end;
var list: array[1..33392] of pnod;
max, ind, nr, n, i: longint;
oper: integer;
f,g: text;
procedure adauga(nr: longint);
var crt,elem: pnod;
begin
ind := (nr mod max) + 1;
crt := list[ind];
while (crt<>nil) and (crt^.info<>nr) do
crt := crt^.next;
if (crt=nil) then begin
new(elem);
elem^.info := nr;
elem^.next := list[ind];
list[ind] := elem;
end
end;
procedure sterge(nr: longint);
var crt, elem: pnod;
begin
ind := (nr mod max) + 1;
crt := list[ind];
if (crt<>nil) then begin
if (crt^.info=nr) then begin
elem := crt;
list[ind] := crt^.next;
dispose(crt);
end else begin
while (crt^.next<>nil) and (crt^.next^.info<>nr) do
crt := crt^.next;
if (crt^.next<>nil) and (crt^.next^.info = nr) then begin
elem := crt^.next;
crt^.next := elem^.next;
dispose(elem);
end;
end;
end;
end;
function cauta(nr: longint): integer;
var found: boolean;
crt: pnod;
begin
ind := (nr mod max) + 1;
crt := list[ind];
while (crt<>nil) and (crt^.info<>nr) do
crt := crt^.next;
if (crt=nil) then
cauta := 0
else
cauta := 1;
end;
begin
max:=33391;
assign(f, 'hashuri.in'); reset(f);
assign(g, 'hashuri.out'); rewrite(g);
readln(f, n);
for i := 1 to n do begin
readln(f, oper, nr);
case oper of
1 : begin
adauga(nr);
end;
2 : begin
sterge(nr);
end;
3 : begin
writeln(g, cauta(nr));
end;
end;
end;
close(f);
close(g);
end.