Pagini recente » Cod sursa (job #899231) | Cod sursa (job #520635) | Cod sursa (job #2951933) | Cod sursa (job #2206970) | Cod sursa (job #340951)
Cod sursa(job #340951)
var n,m:array[1..2000000] of char;
pi:array[1..2000000] of longint;
v:array[1..1000] of longint;
k,i,ln,lm,nrc:longint;
c:char;
f,g:text;
begin
assign(f,'strmatch.in');
assign(g,'strmatch.out');
reset(f);rewrite(g);
readln(f,n);
read(f,m);
repeat
i:=i+1;
until n[i]=#0;
ln:=i-1;
i:=0;
repeat
i:=i+1;
until m[i]=#0;
lm:=i-1;
pi[1]:=0;
for i:=2 to ln do
begin
while (k>0) and (n[k+1]<>n[i]) do
k:=pi[k];
if n[k+1]=n[i] then
k:=k+1;
pi[i]:=k;
end;
k:=0;
for i:=1 to lm do
begin
while (k>0) and (n[k+1]<>m[i]) do
k:=pi[k];
if n[k+1]=m[i] then
k:=k+1;
if k=ln then
begin
nrc:=nrc+1;
if nrc<=1000 then
v[nrc]:=i-ln;
end;
end;
writeln(g,nrc);
if nrc>1000 then
nrc:=1000;
for i:=1 to nrc do
write(g,v[i],' ');
close(f);close(g);
end.