Cod sursa(job #1180232)
Utilizator | Data | 30 aprilie 2014 11:16:05 | |
---|---|---|---|
Problema | Hashuri | Scor | 20 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 2.25 kb |
Program hashuri;
const prim=1000001;
type lista=^cell;
cell= record
info:longint;
pred:lista;
end;
var t,n,i,a,b,ok: longint;
lhash : array [0..1000001] of lista;
v,r,p:lista;
procedure add(nod : longint; var v : lista);
var r : lista;
begin
new(r);
r^.info:=nod;
r^.pred:=v;
v:=r;
end;
begin
assign(input,'hashuri.in'); reset(input);
assign(output,'hashuri.out'); rewrite(output);
readln(t);
for i:=0 to prim do lhash[i]:=nil;
for i:=1 to t do begin
read(a,b);
v:=lhash[b mod prim];
case a of
1 : begin
while v<>nil do begin
if v^.info=b then ok:=1;
v:=v^.pred;
end;
if ok=0 then add(b,lhash[b mod prim]);
end;
3 : begin
while v<>nil do begin
if v^.info=b then ok:=1;
v:=v^.pred;
end;
writeln(ok);
ok:=0;
end;
2 : begin
r:=lhash[b mod prim];
if lhash[b mod prim]<>nil then
if lhash[b mod prim]^.info=b then
lhash[b mod prim]:=lhash[b mod prim]^.pred
else
while v<>nil do begin
if v^.info=b then begin
r^.pred:=v^.pred;
dispose(r);
break;
end;
r:=v;
v:=v^.pred;
end;
end;
end;
end;
close(input);
close(output);
end.