Cod sursa(job #1080778)

Utilizator Eby7Elena Obreja Eby7 Data 12 ianuarie 2014 21:37:00
Problema Prefix Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
#define Nmax 1000001
int N,T,bst,pi[Nmax];
int i,k;
char p[Nmax];
int main()
{
    f>>T;
    for(int z=1;z<=T;z++)
     {
        f>>p+1;
        pi[1]=0;
        k=0;
        bst=0;
        for(i=2;p[i]!=(char)NULL;i++)
        {
            while(k>0&&p[k+1]!=p[i])
                k=pi[k];
            if(p[k+1]==p[i])
                ++k;
            pi[i]=k;
        }
        N=i-1;
        for(i=2;i<=N;i++)
            if(i%(i-pi[i])==0&&pi[i]>=i/2)
                bst=i;
        g<<bst<<"\n";
    }
    return 0;
}