Cod sursa(job #1180178)

Utilizator azkabancont-vechi azkaban Data 30 aprilie 2014 01:07:46
Problema Hashuri Scor 20
Compilator fpc Status done
Runda Arhiva educationala Marime 2.72 kb
Program hashuri;
const prim=99913;
type lista=^cell;
     cell= record
                info:longint;
                pred:lista;
           end;
var t,n,i,a,b,ok: longint;
    lhash : array [0..99914] of lista;
    v,r: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
                                          if v<>nil then  begin
                                              if v^.info=b then
                                                       lhash[b mod prim]:=lhash[b mod prim]^.pred
                                                       else begin
                                                               while v^.pred<>nil do begin
                                                                    if (v^.pred^.info=b) then
                                                                    r:=v;
                                                                    v:=v^.pred;
                                                                    end;
                                                               if r<>nil then r^.pred:=r^.pred^.pred;
                                                             end;


                                         end;
                                  end;
                           end;


                   end;
    close(input);
    close(output);
end.