Cod sursa(job #483572)

Utilizator 05_YohnE1 La5c01 05_Yohn Data 9 septembrie 2010 12:15:30
Problema Hashuri Scor 70
Compilator fpc Status done
Runda Arhiva educationala Marime 1.34 kb
const q=200003;
type pnod=^nod;
     nod = record
           info:longint;
           urm:pnod;
           end;

var p,prec:pnod;
v:array[0..200003]of pnod;
i,n,x:longint;
op:byte;

function caut(x:longint):byte;
var ok:byte;
begin
ok:=0;
p:=v[x mod q];  prec:=nil;
while p<>nil do
      if p^.info=x then begin
                        ok:=1;
                        break;
                        end
                        else begin
                             prec:=p;
                             p:=p^.urm;
                             end;
caut:=ok;
end;

procedure add(x:longint);
var poz:longint;
begin
if caut(x)=0 then begin
   poz:=x mod q;
   new(p);
   p^.info:=x;
   p^.urm:=v[poz];
   v[poz]:=p;
end;
end;

procedure del(x:longint);
var poz:longint;
begin
if caut(x)=1 then begin
   poz:=x mod q;
   if p=v[poz] then begin
               v[poz]:=p^.urm;
               dispose(p);
               end
               else begin
                    prec^.urm:=p^.urm;
                    dispose(p);
                    end;
end;
end;

begin
assign(input,'hashuri.in');
reset(input);
assign(output,'hashuri.out');
rewrite(output);
read(n);
for i:=1 to n do begin
    read(op,x);
    if op=1 then add(x);
    if op=2 then del(x);
    if op=3 then writeln(caut(x));
end;
close(output);
end.