Cod sursa(job #837358)

Utilizator stoicatheoFlirk Navok stoicatheo Data 17 decembrie 2012 21:48:13
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <string.h>
#define NMax 1000010
using namespace std;
 
const char IN[]="prefix.in",OUT[]="prefix.out";
 
ifstream fin(IN);
ofstream fout(OUT);
 
int Tes,N,Rez;
int P[NMax];
char A[NMax];
 
inline void prefix(){
 
    int i,k=0;
    P[1]=0;Rez=0;
    for (i=2;A[i];++i)
    {
        while (k && A[k+1]!=A[i])
            k=P[k];
        k+= (A[k+1]==A[i]);
        P[i]=k;
    }
    for (--i;i;--i)
        if (P[i] && i%(i-P[i])==0 ) { Rez=i;return;}
 
}
 
int main()
{
    fin>>Tes;fin.get();
    while (Tes--)
    {
        fin.getline(A+1,NMax);
        prefix();
        fout<<Rez<<"\n";
    }
    fin.close();fout.close();
    return 0;
}