Cod sursa(job #779740)

Utilizator crushackPopescu Silviu crushack Data 18 august 2012 17:24:07
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 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;
		if (P[i]>=i>>1 && i%(i-P[i])==0 ) Rez=i;
	}

}

int main()
{
	fin>>Tes;fin.get();
	while (Tes--)
	{
		fin.getline(A+1,NMax);
		prefix();
		fout<<Rez<<"\n";
	}
	fin.close();fout.close();
	return 0;
}