Cod sursa(job #1712432)

Utilizator medicinedoctoralexandru medicinedoctor Data 2 iunie 2016 20:50:19
Problema Potrivirea sirurilor Scor 14
Compilator fpc Status done
Runda Arhiva educationala Marime 0.81 kb
var a,b:string;
x:array [1..2000000] of integer;
i,q:integer;

procedure lire;
begin
  assign(input,'strmatch.in');
  reset(input);
  readln(a);
  readln(b);
  close(input);
end;

procedure ecrire;
var i:integer;
begin
  assign(output,'strmatch.out');
  rewrite(output);
  writeln(q);
  if q>1000 then q:=1000;
  for i:=1 to q do
    write(x[i]-1,' ');
  close(output);
end;

function verifica(x:integer):boolean;
var i:integer; q:boolean;
begin
  q:=true;
  i:=2;
  while i<=length(a) do
  begin
    if a[i]<>b[x+i-1] then begin q:=false; break; end;
    i:=i+1;
  end;
  verifica:=q;
end;

begin
  lire;
  q:=0;
  for i:=1 to length(b) do
    if (i-1+length(a)<length(b)) and (a[1]=b[i]) and (a[length(a)]=b[i-1+length(a)]) and verifica(i) then begin q:=q+1; x[q]:=i; end;
  ecrire;
end.