Cod sursa(job #292549)

Utilizator zbarniZajzon Barna zbarni Data 31 martie 2009 11:38:53
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<fstream.h>
#include<string.h>
#define nx 1000005
char A[nx],B[nx];
int n,m;
int pi[nx],max;
void make_prefix()
 {
  int i,k=0;max=0;
  for (i=2,pi[1]=0;i<=n;++i)
   {
    while (k && A[k+1]!=A[i])
	k=pi[k];
    if (A[k+1]==A[i])
      ++k;
    pi[i]=k;
    if (k && !(i%(i-k)) && i>max)
      max=i;
   }
 }

int main()
 {
  int t,i;
  ifstream be ("prefix.in");
  ofstream ki ("prefix.out");
  be>>t;
  for (;t;--t)
  {
  be>>A;
  n=strlen(A);
  for (i=n;i;--i)
    A[i]=A[i-1];
  A[0]=' ';
  make_prefix();
  ki<<max<<'\n';
  }
  ki.close();
  return 0;
 }