Cod sursa(job #178606)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 14 aprilie 2008 20:29:52
Problema Prefix Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.7 kb
var v:array[0..1000100]of char;
    pi:array[0..1000100]of longint;
    n,i,j,l,m,k,r:longint;
    f1,f2:text;
begin
   assign(f1,'prefix.in');
   reset(f1);
   readln(f1,m);
   assign(f2,'prefix.out');
   rewrite(f2);
   for l:=1 to m do
   begin
      r:=0;
      n:=0;
      while not eoln(f1)do
      begin
         n:=n+1;
         read(f1,v[n]);
      end;
      readln(f1);
      pi[1]:=0;
      k:=0;
      for i:=2 to n do
      begin
         while(k>0)and(v[k+1]<>v[i])do
            k:=pi[k];
         if v[k+1]=v[i] then inc(k);
         pi[i]:=k;
         if(i mod(i-pi[i])=0)and(pi[i]>0)then r:=i;
      end;
      writeln(f2,r);
   end;
   close(f1);
   close(f2);
end.