Pagini recente » Cod sursa (job #11386) | Cod sursa (job #1153690)
var a,b,v:array[1..2000003] of integer;
c:char;
i,j,sum_a,sum_b,n,m,nr:longint;
f,g:text;
function match(st:longint):boolean;
var i:longint;
begin
match:=true;
for i:=1 to n do
if a[i]<>b[st+i-1] then match:=false;
end;
begin
assign(f,'strmatch.in');reset(f);
assign(g,'strmatch.out');rewrite(g);
m:=0;
n:=0;
sum_a:=0;
while not eoln(f) do
begin
read(f,c);
inc(n);
a[n]:=ord(c);
sum_a:=sum_a+a[n];
end;
readln(f);
while not eoln(f) do
begin
read(f,c);
inc(m);
b[m]:=ord(c);
end;
nr:=0;
sum_b:=0;
for i:=1 to n do sum_b:=sum_b+b[i];
for i:=1 to m-n+1 do begin
if (sum_a=sum_b)and(match(i)=true)
then begin
inc(nr);
v[nr]:=i-1;
end;
sum_b:=sum_b-b[i]+b[i+n];
end;
writeln(g,nr);
if nr>1000 then
for i:=1 to 1000 do write(g,v[i],' ')
else
for i:=1 to nr do write(g,v[i],' ');
close(f);
close(g);
end.