Cod sursa(job #408715)

Utilizator hungntnktpHungntnktp hungntnktp Data 3 martie 2010 10:36:21
Problema Hashuri Scor 30
Compilator fpc Status done
Runda Arhiva educationala Marime 1.31 kb
const fi = 'hashuri.in';
     fo = 'hashuri.out';
     maxn = 1000000;
     p = 1000003;
var a : array[0..maxn] of longint;
    f,next : array[0..p] of longint;
    n : longint;
    f1,f2 : text;

function check(v:longint):longint;
var ok,i,j : longint;
 begin
  ok := 0;
  i := v mod p;
  i := f[i];
  while i <> 0 do
   begin
    if a[i] = v then
     begin
      ok := 1; break;
     end;
    i := next[i];
   end;
  exit(ok);
 end;

procedure delete(v:longint);
var i,j,k,prev : longint;
 begin
  i := v mod p; j := f[i]; prev := 0;

  while (j <> 0) and (a[j] = v) do j := next[j];
  f[i] := j;

  while j <> 0 do
   begin
    if a[j] = v then
     begin
      next[prev] := next[j];
      j := next[j];
     end
    else
     begin
      prev := j;
      j := next[j];
     end;
   end;
 end;

procedure push(w,v:longint);
var i,j : longint;
 begin
  i := v mod p;
  j := f[i];
  next[i] := j;
  f[i] := w;
 end;

procedure init;
var u,v,i : longint;
 begin
  read(f1,n);
  for i := 1 to n do
   begin
    read(f1,u,v);
    a[i] := v;

    if u = 1 then push(i,v) else
    if u = 2 then delete(v) else
    if u = 3 then Writeln(f2,check(v));
   end;
 end;

begin
 assign(f1,fi);
 reset(f1);
 assign(f2,fo);
 rewrite(f2);
 init;
 close(f1); close(f2);
end.