Cod sursa(job #1143883)

Utilizator Vasile_Catananoname Vasile_Catana Data 16 martie 2014 11:13:13
Problema Hashuri Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.83 kb
program p1;
type lista=^celula;
 celula=record
  info:longint;
  next:lista;
        end;
const modulo=690001;
var a:array[0..690001] of lista;
    p,aux:lista;
    m,i,j,tip,nr,n:longint;
    f,g:text;
    b1,b2:array[0..1 shl 18  ] of char;


function cauta(nr:longint):boolean;
begin
 cauta:=false;
 m:=nr mod modulo;
 p:=a[m];
 while p<> nil do begin
        if p^.info=nr then
                begin
                cauta:=true;
                break;
                end;
        p:=p^.next;
     end;
end;

procedure adauga(nr:longint);
begin
m:= nr mod modulo;
if cauta(NR)=false then begin
                new(P);
                p^.info:=nr;
                p^.next:=a[m];
                a[m]:=p;
                        end;
end;


procedure sterge (nr:longint);
begin
 m:=nr mod modulo;
 p:=a[m];
 aux:=a[m];
 if a[m]<> nil then
                if a[m]^.info =nr then a[m]:=a[m]^.next
                else
                while p<> nil do begin
                        if p^.info=nr then begin
                                aux^.next:=p^.next;
                                dispose(P);
                                break;
                                        end;
                                aux:=p;
                                p:=p^.next;
                                end;
end;
begin
assign(f,'hashuri.in');reset(F);settextbuf(f,b1);
assign(g,'hashuri.out');rewrite(G); settextbuf(g,b2);
readln(F,n);
 for i:=1 to n do begin
        readln(f,tip,nr);
        if tip=1 then adauga(nr)
                else if tip=2 then sterge(nr)
                        else
                        if cauta(nr) then writeln(g,1)
                                else writeln(g,0);
                end;
close(F);
close(G);
end.