Cod sursa(job #567147)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 29 martie 2011 19:29:39
Problema Hashuri Scor 70
Compilator fpc Status done
Runda Arhiva educationala Marime 1.34 kb
type lista=^nod;
     nod=record n:longint; a:lista; end;

const modul=299993;

var v:array[0..modul] of lista;
    x, n, i, o, y, j:longint;
    p, r:lista;
    ok:boolean;
    f, g:text;

begin
assign (f, 'hashuri.in'); reset(f);
assign (g, 'hashuri.out'); rewrite (g);
read (f, n);
for i := 0 to modul do begin new (v[i]); v[i]^.n :=0; end;

for i := 1 to n do
  begin
  read (f, o, x);
  y:= x mod modul;
  case o of
    1:begin
      p:=v[y];
      ok:=true; j:=1;
      while (j <= v[y]^.n) and ok do
        begin
        p:=p^.a;
        if p^.n = x then ok :=false;
        j:=j+1;
        end;
      if ok then begin new(r); r^.n:=x; p^.a:=r; v[y]^.n:= v[y]^.n+1; end;
      end;

    2:begin
      p:=v[y]; r:=v[y];
      ok:=true; j:=1;
      while (j <= v[y]^.n) and ok do
        begin
        p:=p^.a;
        if p^.n = x then ok :=false;
        if ok then r:=r^.a;
        j:=j+1;
        end;
      if ok=false then begin r^.a:=p^.a; dispose(p); v[y]^.n:=v[y]^.n-1; end;
      end;

    3:begin
      p:=v[y];
      ok:=true; j:=1;
      while (j <= v[y]^.n) and ok do
        begin
        p:=p^.a;
        if p^.n = x then ok :=false;
        j:=j+1;
        end;
      if ok then writeln (g, '0')
            else writeln (g, '1');
      end;
    end;
  end;

close (f); close (g);
end.