Cod sursa(job #276712)

Utilizator FllorynMitu Florin Danut Flloryn Data 11 martie 2009 12:19:03
Problema Abc2 Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.93 kb
program pascal;
var f,g:text; z:array[1..100000] of longint; t:ansistring; q,k,i,m,n,j:longint;
    s:string;
    rez:longint;

  procedure prefix(t:ansistring);
  begin
  m:=length(t);
  z[1]:=0;
  k:=0;
  for q:=2 to m do
   begin
   while (k>0) and (t[k+1]<>t[q]) do k:=z[k];
   if t[k+1]=t[q] then k:=k+1;
   z[q]:=k;
   end;
  end;

  PROCEDURE KMP;
  begin
  N:=LENGTH(s);
  M:=LENGTH(t);
  prefix(t);
  q:=0;
  for i:=1 to n do
    begin
    while (q>0) and (t[q+1]<>s[i]) do q:=z[q];
    if (t[q+1]=s[i]) then q:=q+1;
    if q=m then
          begin
          inc(rez);
          q:=z[q];
          end;
    end;
  end;
  procedure citire;
  begin
  assign(f,'abc2.in'); reset(f);
  assign(g,'abc2.out'); rewrite(g);
  readln(f,s);
  rez:=0;
   while not seekeof(f) do
       begin
       readln(f,t);
       KMP;
       end;
  close(f);
  end;



begin
citire;
write(g,rez);
close(g);
end.