Cod sursa(job #1061979)

Utilizator DGVanceaDragos Gabriel Vancea DGVancea Data 20 decembrie 2013 15:53:46
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
char s[1000001];
int pi[1000001],l,k,i,j,c,n;
int main()
{
    ifstream fin("prefix.in");
    ofstream fout("prefix.out");
    fin>>n;
    for(i=1; i<=n; i++)
    {
        fin>>s+1;
        l=strlen(s+1);
        k=0;
        pi[1]=0;
        for ( j = 2; j <= l; j++ )
        {
            while ( k && s[ k +1 ] != s[ j ] )
                k = pi[ k ];
            if ( s[ k +1 ] == s[ j ] )
                k++;
            pi[ j ] = k;
        }
        c=0;
        for( j=l; j>1; j--)
        {
            if(pi[j]&& j%(j-pi[j])==0)
            {
                c=j;
                break;
            }
        }
        fout<<c<<"\n";
        memset(s,0,sizeof(s));
    }
    return 0;
}