Pagini recente » Cod sursa (job #927858) | Cod sursa (job #2773293) | Cod sursa (job #3201910) | Cod sursa (job #1316903) | Cod sursa (job #747191)
Cod sursa(job #747191)
program podsf;
var f,g:text;
sir,subsir:ansistring;
i,j,k,lsir,lsubsir,nr:longint;
a:array[1..200005] of longint;
v:array[1..1005] of longint;
bufin:array[1..65000] of byte;
procedure creare;
begin
for j:=2 to lsubsir do
begin
while (k>0) and (subsir[k+1]<>subsir[j]) do
k:=a[k];
if subsir[k+1]=subsir[j] then
k:=k+1;
a[j]:=k;
end;
end;
begin
assign(f,'strmatch.in'); reset(f);
assign(g,'strmatch.out'); rewrite(g);
settextbuf(f,bufin);
readln(f,subsir); readln(f,sir);
lsir:=length(sir);
lsubsir:=length(subsir);
k:=0;
creare;
k:=0;
for j:=1 to lsir do
begin
while (k>0) and (sir[j]<>subsir[k+1]) do
k:=a[k];
if sir[j]=subsir[k+1] then
k:=k+1;
if k=lsubsir then
begin
nr:=nr+1;
if nr<=1000 then
v[nr]:=j-k;
k:=a[k];
end;
end;
writeln(g,nr);
if nr<1000 then
for i:=1 to nr do
write(g,v[i],' ')
else
for i:=1 to 1000 do
write(g,v[i],' ');
close(f);
close(g);
end.