Nu aveti permisiuni pentru a descarca fisierul grader_test22.ok
Cod sursa(job #241036)
Utilizator | Data | 9 ianuarie 2009 10:25:23 | |
---|---|---|---|
Problema | Hashuri | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 2.07 kb |
program hash;
type ref=^inr;
inr=record
nr:longint;
adr:ref
end;
var f,g:text;
h:array[0..5896] of ref;
n,i,op,x,j:longint;
b,c,d:ref;
begin
assign(f,'hashuri.in');
reset(f);
readln(f,n);
assign(g,'hashuri.out');
rewrite(g);
for i:=0 to 5896 do h[i]:=nil;
for i:=1 to n do
begin
readln(f,op,x);
j:=x mod 5897;
case op of
1:begin
c:=h[j];
if c=nil then begin
new(b);
b^.nr:=x;
b^.adr:=nil;
h[j]:=b
end
else begin
while (c^.nr<>x) and (c^.adr<>nil) do c:=c^.adr;
if (c^.nr<>x)and (c^.adr=nil) then begin
new(d);
d^.nr:=x;
d^.adr:=nil;
c^.adr:=d
end
end
end;
2:begin
c:=h[j];
if c<>nil then begin
while (c^.nr<>x) and (c^.adr<>nil) do begin
b:=c;
c:=c^.adr;
end;
if (c^.nr=x) then if c<>h[j] then b^.adr:=c^.adr
else h[j]:=h[j]^.adr
end;
end;
3:begin
c:=h[j];
if c=nil then writeln(g,0)
else begin
while (c^.nr<>x) and( c^.adr<>nil) do c:=c^.adr;
if c^.nr=x then writeln(g,1)
else writeln(g,0);
end;
end;
end;
close(f);
close(g);
end.