Cod sursa(job #668963)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 25 ianuarie 2012 21:32:20
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <cstdio>
#include <cstring>
using namespace std;
#define lmax 1000005
char sir[lmax];
int urm[lmax];
int main()
{ int i,t,n,k,j,sol;
freopen("prefix.in","r",stdin); scanf("%d\n",&t);
freopen("prefix.out","w",stdout);
for(i=1;i<=t;++i)
    {
    gets(sir+1); sir[0]=' '; n=strlen(sir)-1;
    urm[1]=0; k=0; sol=0;
    for(j=2;j<=n;++j)
        {
        while(sir[k+1]!=sir[j]&&k>0)
            k=urm[k];
        if(sir[k+1]==sir[j])++k;
        urm[j]=k;
        if(j%(j-urm[j])==0&&urm[j]>0)sol=j;
        }
    printf("%d\n",sol);
    }
fclose(stdin);
fclose(stdout);
return 0;
}