Cod sursa(job #1180234)
Utilizator | Data | 30 aprilie 2014 11:21:09 | |
---|---|---|---|
Problema | Hashuri | Scor | 40 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 2.67 kb |
Program hashuri;
const prim=660013;
type lista=^cell;
cell= record
info:longint;
pred:lista;
end;
var t,n,i,a,b,ok: longint;
lhash : array [0..660013] 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 begin
ok:=1;
break;
end;
v:=v^.pred;
end;
if ok=0 then add(b,lhash[b mod prim]);
ok:=0;
end;
3 : begin
while v<>nil do begin
if v^.info=b then begin
ok:=1;
break;
end;
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.