Cod sursa(job #1203824)

Utilizator valen.valentinValentin Valeanu valen.valentin Data 1 iulie 2014 13:08:14
Problema Potrivirea sirurilor Scor 2
Compilator fpc Status done
Runda Arhiva educationala Marime 0.84 kb
program strmatch;
type
tabel=array [0..2000001] of longint;
tab=array [0..20000001] of char;
var
ff1,ff2:tab;
v,vv:tabel;
s,ss:ansistring;
i:longint;
n,m,j,k,l,kk:longint;
f1,f2:text;
begin
assign (f1,'strmatch.in');
assign (f2,'strmatch.out');
reset (f1);
rewrite (f2);
readln (f1,s);
readln (f1,ss);
settextbuf(f1,ff1);
settextbuf(f2,ff2);
n:=length(s);
m:=length(ss);
l:=0; kk:=0; k:=0;
for i:=2 to n do begin
while (k>0) and (s[i]<>s[k+1]) do k:=v[k];
if s[k+1]=s[i] then k:=k+1;
v[i]:=k;
end;
for i:=1 to m do
begin
while (kk>0) and (ss[i]<>s[kk+1]) do kk:=v[kk];
if s[kk+1]=ss[i] then kk:=kk+1;
if kk=n then begin
l:=l+1;
if l<=1000 then vv[l]:=i-n;
kk:=v[kk];
end;
end;
writeln (f2,kk);
if l>1000 then l:=1000;
for i:=1 to kk do
write (f2,vv[i],' ');
close (f1);
close (f2);
end.
close (f1);
close (f2);
end.