Pagini recente » Cod sursa (job #1752748) | Cod sursa (job #1629981) | Cod sursa (job #3273853) | Cod sursa (job #29826) | Cod sursa (job #1212032)
program zfunction;
var bufin,bufout:array [1..100000] of longint;
a,b:ansistring;
n,m,i,r,l,k:longint;
z:array [1..4000001] of longint;
begin
assign(input,'strmatch.in');
reset(input);
settextbuf(input,bufin);
assign(output,'strmatch.out');
rewrite(output);
settextbuf(output,bufout);
readln(a);
readln(b);
n:=length(a);
m:=length(b);
a:=a+'#'+b;
r:=1;l:=1;
for i:=2 to n+m+1 do
begin
if i<=r then
if z[i-l+1]<r-i+1 then z[i]:=z[i-l+1] else z[i]:=r-i+1;
while (z[i]+i<=n+m+1)and(a[z[i]+1]=a[i+z[i]]) do inc(z[i]);
if i+z[i]-1>r then
begin
l:=i;
r:=i+z[i]-1;
end;
end;
for i:=n+2 to n+m+1 do if z[i]=n then inc(k);
writeln(k);
for i:=n+2 to n+m+1 do if z[i]=n then write(i-n-2,' ');
writeln;
close(output);
end.