Pagini recente » Cod sursa (job #1335552) | Cod sursa (job #1644983) | Cod sursa (job #1906924) | Cod sursa (job #2263257) | Cod sursa (job #340947)
Cod sursa(job #340947)
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);
while not eoln(f) do
begin
read(f,c);
ln:=ln+1;
n[ln]:=c;
end;
readln(f);
while not eof(f) do
begin
read(f,c);
lm:=lm+1;
m[lm]:=c;
end;
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
if nrc=1000 then
break;
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;
v[nrc]:=i-ln;
end;
end;
writeln(g,nrc);
for i:=1 to nrc do
write(g,v[i],' ');
close(f);close(g);
end.