Cod sursa(job #409557)

Utilizator jednakostjedss na kost jednakost Data 3 martie 2010 18:44:51
Problema Hashuri Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.4 kb
{$M 64000000,0}
{$H-,I-,Q-,R-,S-}
{La Hoang
Ngay 3-3-2010}
const
   TFI  = 'hashuri.in';
   TFO  = 'hashuri.out';
   MaxN = 1000000;
   P = 100007;
var
   fi, fo: text;
   n, x, y, count: longint;
   A, Link: array[0..MaxN] of longint;
   H: array[0..P] of longint;
   (*-----------------------------------*)
   procedure Push;
   var
      u: longint;
   begin
      inc(count);
      u := y mod p;
      A[count] := y;
      Link[count] := H[u];
      H[u] := count;
   end;
   (*-----------------------------------*)
   function Pop(k: longint): longint;
   var
      u, v, i: longint;
   begin
      u := y mod P;
      i := H[u];
      While i <> 0 do
         begin
            v := A[i];
            if y = v then
               if k = 1 then
                  begin
                     A[i] := -1;
                     exit;
                  end else exit(1);
            i := Link[i];
         end;
      Pop := 0;
   end;
   (*-----------------------------------*)
begin
   Assign(fi, TFI); Reset(Fi);
   Assign(fo, TFO); Rewrite(fo);
   Fillchar(A, sizeof(A), 255);
   Fillchar(H, sizeof(H), 0);
   count := 0;
   Readln(fi, n);
   While n > 0 do
      begin
         dec(n);
         Readln(fi, x, y);
         if x = 1 then Push else
         if x = 2 then Pop(1) else
         if x = 3 then Writeln(fo, Pop(0));
      end;
   CLose(fi);
   Close(fo);
end.