Pagini recente » Cod sursa (job #1620784) | Cod sursa (job #2087265) | Cod sursa (job #1061918) | Cod sursa (job #1699008) | Cod sursa (job #276712)
Cod sursa(job #276712)
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.