Pagini recente » Cod sursa (job #834792) | Cod sursa (job #159317) | Cod sursa (job #1326413) | Cod sursa (job #2481033) | Cod sursa (job #1211914)
program zfunction;
var a,b:ansistring;
bufin,bufout:array[1..100000] of byte;
z,ans:array[1..4000001]of longint;
n,l,r,i,j,len:longint;
begin
assign(input,'strmatch.in');
reset(input);
assign(output,'strmatch.out');
rewrite(output);
for i:=1 to 4000001 do z[i]:=0;
readln(a);len:=length(a);
readln(b);
a:=a+'#'+b; l:=1;r:=1; n:=length(a);
for i:=2 to n do
begin
if i>r then
begin
z[i]:=0;
while (n>=i+z[i])and(a[z[i]+1]=a[i+z[i]]) do inc(z[i]);
if z[i]<>0 then
begin
l:=i;
r:=i+z[i]-1;
end;
end else
begin
z[i]:=z[i-l];
if r-i+1<z[i] then z[i]:=r-i+1;
while (n>=i+z[i])and(a[z[i]+1]=a[i+z[i]]) do inc(z[i]);
r:=i+z[i]-1;
end;
end;
j:=0;
for i:=len+2 to n do if z[i]=len then
begin
inc(j);
ans[j]:=i-len-2;
end;
writeln(j);
for i:=1 to j do write(ans[i],' ');
close(output);
end.