Cod sursa(job #562129)

Utilizator SadmannCornigeanu Calin Sadmann Data 22 martie 2011 13:24:14
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<fstream>
#include<cstring>
#define NMAX 2000005
using namespace std;

char A[NMAX],B[NMAX];
int NA,NB;
int poz[1020];
int pi[NMAX];

ifstream in("prefix.in");
ofstream out("prefix.out");

inline void make_prefix()
{
    int i,q=0,val=0;
    for(i=2;i<=NA;i++)
    {
        while(q && A[q+1]!=A[i])
            q=pi[q];
        if(A[q+1]==A[i])
            q++;
        pi[i]=q;
		if(q && !(i%(i-q)))
			val=i;
    }
	out<<val<<"\n";
}

int main()
{
    int i,q=0,nr=0,N;

    for(in>>N;N;N--)
    {
        in>>A+1;
        NA=strlen(A+1);
        make_prefix();
    }

    return 0;
}