Cod sursa(job #232983)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 16 decembrie 2008 17:23:25
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<stdio.h>
#include<string.h>
long t,i,k,m,a[1000005],l,j,x;
char s[1000005];
int main()
{
 freopen("prefix.in","r",stdin);
 freopen("prefix.out","w",stdout);
 scanf("%ld",&t);
 for(i=1;i<=t;++i)
    {scanf("\n");
     gets(s);
     k=-1;
     m=0;
     a[0]=-1;
     l=strlen(s);
     for(j=1;j<l;++j)
        {while(k>=0&&s[k+1]!=s[j])k=a[k];
         if(s[k+1]==s[j])++k;a[j]=k;
         if(a[j]>=0){x=j-a[j];
         if((j+1)%x==0)m=j+1;}
        }
    printf("%ld\n",m);
   }
 return 0;
}