Cod sursa(job #868207)

Utilizator rotarraresRotar Rares rotarrares Data 30 ianuarie 2013 19:48:29
Problema Hashuri Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 2.04 kb
type pnod=^nod;
          nod=record
              info:longint;
              dr:pnod;
              end;
var a:array[1..1000001] of PNOD;
                      c:byte;n,j:integer;d,i:longint; t:boolean;
      f,g:text;
procedure adaugare(e:longint);
var d:pnod;
begin
new(d);
d^.dr:=a[i];
d^.info:=e;
a[i]:=d;
end;

function verificare(x:longint):boolean;
var r,k:pnod;ver:boolean;
begin
   ver:=false;
   if a[i]^.dr<>nil then
       Begin
       r:=a[i];
          if r^.info=x then
                begin
                ver:=true;
                if c=2 then
                a[i]:=a[i]^.dr;
                if c=1 then
                adaugare(x);
                end;
       while r^.dr^.dr<>nil do
            begin
            if r^.dr^.info=x then
                begin
                ver:=true;
                if c=2 then
                begin
                k:=r^.dr^.dr;
                r^.dr:=k;
                end;
                if c=1 then
                adaugare(x);
                end;
            if r^.dr<>nil then
            r:=r^.dr;
            end
       end
   else
       begin
       if c=1 then
          adaugare(x);
       end;
  verificare:=ver;
end;

procedure afisare;
var r:pnod;y:longint;
begin
For y:=1 to 1000000 do
   Begin
   If a[y]^.dr<>nil then
      Begin
        r:=a[y];
        while r^.dr<>nil do
          Begin
          writeln(g,r^.info);
          r:=r^.dr;
          end;
      end;
   end;
end;
begin
assign(f,'hasuri.in');reset(f);
assign(g,'hasuri.out');rewrite(g);
readln(f,n);
For i:=1 to 1000001 do
  begin
   new(a[i]);
   a[i]^.dr:=nil;
  end;
for j:=1 to n do
      begin
             readln(f,c,d);
             i:=(d mod 1000000)+1;
             t:=verificare(d);
             if c=3 then
             begin
                 if t=true then
                         writeln(g,'1')
             else
                         writeln(g,'0');
             end;
      end;
writeln(g);
afisare;
close(f);
close(g);
end.