Cod sursa(job #1423183)

Utilizator laura.calimanLaura Caliman laura.caliman Data 21 aprilie 2015 15:52:14
Problema Potrivirea sirurilor Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.63 kb
var a,b:string;
    i,n,m,k:longint;
    v:array[0..1000000] of longint;
    
begin
//  assign(input,'input.in');
  assign(input,'strmatch.in');
  assign(output,'strmatch.out');
  reset(input);
  rewrite(output);
  readln(a);
  readln(b);
  n:=length(a);
  m:=length(b);
  k:=0;
  v[1]:=0;
  for i:=2 to n do begin
    while (k>0) and (a[k+1]<>a[i]) do
      k:=v[k];
    if a[k+1]=a[i] then inc(k);
    v[i]:=k;
  end;
  k:=0;
  for i:=1 to m do begin
    while (k>0) and (a[k+1]<>b[i])do
      k:=v[k];
    if a[k+1]=b[i] then inc(k);
    if k=n then begin
      write(i-n+1,' ');
      k:=v[n];
    end;
  end;
end.