Cod sursa(job #758360)

Utilizator ion824Ion Ureche ion824 Data 15 iunie 2012 14:15:27
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
#include<string>
using namespace std;
int n,m,l,next[1000005];
string a;

void make_prefix()
{
  int k=0,i;
  next[1]=0;
  for(i=2;i<=l;++i)
  {
    while(k && a[k+1]!=a[i])k=next[k];
    if(a[k+1]==a[i])++k;
    next[i]=k;                 
  }   
}

int main(void)
{
  ifstream fin("prefix.in");
  ofstream fout("prefix.out");
  string aux; int i,j,mx;
  fin>>n; getline(fin,a); 
  for(i=1;i<=n;++i)
  {
   getline(fin,a);
   l=a.length();
   aux=a[l-1]; a.append(aux);
   for(j=l;j>0;--j)a[j]=a[j-1];   
   make_prefix(); 
   mx=0;
   for(j=l;j>=1;--j)
      if(next[j] && (j%(j-next[j]))==0)
      {
        mx=j;
        break;
      }
   fout<<mx<<'\n';          
  }
 
 return 0;   
}