Cod sursa(job #588881)

Utilizator MKLOLDragos Ristache MKLOL Data 9 mai 2011 21:36:53
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
#define Nmax 2000002

char l[Nmax],v[Nmax];
int S1,S2,next[Nmax],K,rez[1234],r,ras,maxi;

void make()
{
    int k=0;
    next[1]=0;
    for(int x=2;x<=S1;++x)
    {
        while(k>=1&&v[k+1]!=v[x]) k=next[k];
            if(v[k+1]==v[x]) ++k;//,printf("%c %c\n",v[k],v[x]);
          //  printf("%d %d\n",k+1,x);
            next[x]=k;
    if(x-next[x]!=x)
    if(x%(x-next[x])==0)
    {
        maxi=x;
    }
    }

}

int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
    scanf("%d",&K);


        while(K--)
        {
        maxi=0;
        scanf("%s",v+1);
        S1=strlen(v+1);
        make();
        printf("%d\n",maxi);
        }

make();

}