Cod sursa(job #1111645)

Utilizator WictorTTimoftii Victor WictorT Data 19 februarie 2014 00:38:28
Problema Potrivirea sirurilor Scor 14
Compilator fpc Status done
Runda Arhiva educationala Marime 0.65 kb
 Program Str ;
  var a,b:string ; f:text ; i,m,n,k,c:longint ;
      l,j:array[0..2000001] of longint ;

 BEGIN c:=0 ;
  assign(f,'strmatch.in') ; reset(F) ; readln(f,a) ; readln(f,b) ; close(f) ;
   n:=length(a) ; m:=length(b) ; writeln(n,' ',m) ;
 l[1]:=0 ; for i:=2 to n do if a[l[i-1]+1]=a[i] then l[i]:=l[i-1]+1 ;
    k:=0 ; for i:=1 to m do begin while (k>0) and (a[k+1]<>b[i]) do k:=l[k] ;
     if a[k+1]=b[i] then inc(k) else k:=l[k] ;
     if k=n then begin inc(c) ; j[c]:=i-n ; k:=l[k] ; end ; writeln(k,' ',i) ; end ;
  assign(f,'strmatch.out') ; rewrite(f) ;
      writeln(f,c) ;
   for i:=1 to c do write(f,j[i],' ') ; close(f) ;
  end .