Cod sursa(job #1180232)

Utilizator azkabancont-vechi azkaban 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.