Cod sursa(job #527067)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 30 ianuarie 2011 16:07:18
Problema Prefix Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <stdio.h>
#include <string>
#define maxn 1000010

int i,T,N,p,max;
char A[maxn],P[maxn];
int pi[maxn];

void kmp()
{	
	int k=0;
	pi[1]=0;
	for(i=2;i<=N;i++)
	{
		while(k>0 && A[k+1]!=A[i])
			k=pi[k];
		if(A[k+1]==A[i])
			k++;
		pi[i]=k;
		if(i%(i-k)==0 && k>0)
			max=i;
	}
}

int main()
{
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);
	scanf("%d",&T);
	for(int t=1;t<=T;t++)
	{
		scanf("%s",A+1); A[0]=' '; N=strlen(A)-1;
		kmp();
		printf("%d\n",max);
	}
	
}