Pagini recente » Cod sursa (job #834425) | Cod sursa (job #1616200) | Borderou de evaluare (job #1569170) | Cod sursa (job #2106015) | Cod sursa (job #1501805)
{$R-}
var a,b:array[1..2000003]of char;
pi:array[1..2000003]of longint;
r:array[1..1000]of longint;
f,fo:text;
n,m,i,j,k,l:longint;
begin
assign(f,'strmatch.in');
assign(fo,'strmatch.out');
reset(f);
n:=0;m:=0;
while not(eoln(f)) do
begin inc(n);
read(f,a[n]);
end;
readln(f);
while not(eoln(f)) do
begin inc(m);
read(f,b[m]);
end;
close(f);
k:=0;
pi[1]:=k;
for i:=2 to n do
begin
while (k>0)and(a[i]<>a[k+1])do
k:=pi[k];
if a[i]=a[k+1] then
inc(k);
pi[i]:=k;
end;
k:=0;j:=0;
for i:=1 to m do
begin
while (j>0)and(a[j+1]<>b[i])do
j:=pi[j];
if a[j+1]=b[i] then
inc(j);
if j=n then
begin
inc(k);
if k<=1000 then r[k]:=i-n;
{if k=1000 then
begin
rewrite(fo);
writeln(fo,k);
for l:=1 to k do
write(fo,r[l],' ');
close(fo);
halt
end;}
end
end;
rewrite(fo);
writeln(fo,k);
l:=1000;
if k<l then l:=k;
for i:=1 to l do
write(fo,r[i],' ');
close(fo);
end.