Cod sursa(job #1625067)

Utilizator alexpascadiAlexandru Pascadi alexpascadi Data 2 martie 2016 16:25:36
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <stdio.h>

using namespace std;

const int N = 1000001;
char v[N];
int pred[N];

int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);

    int t,i,j,k,rez;
    scanf("%d\n",&t);
    for(i=0;i<t;i++)
    {
        gets(v+1);
        pred[1]=0; k=0;
        rez=0;
        for(j=2;v[j];j++)
        {
            while(k>0 && v[j]!=v[k+1])
                k=pred[k];
            if(v[j]==v[k+1])
                k++;
            pred[j]=k;
            if(pred[j]!=0 && j%(j-pred[j])==0)
                rez=j;
        }
        printf("%d\n",rez);
    }
    return 0;
}