Cod sursa(job #210614)

Utilizator devilkindSavin Tiberiu devilkind Data 28 septembrie 2008 12:17:28
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>

#define NMAX 1000000

char s[NMAX];
int PI[NMAX];

int main()
{
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);

	int i,k,ret;
	int T,P;

	scanf("%d\n",&T);

	for (;T;T--)
	{
		fgets(s,NMAX,stdin);
		
		ret=0;
		PI[0]=0;
		k=0;
		for (i=1;s[i]>='a' && s[i]<='z';i++)
		{
			while ( (k) && (s[k]!=s[i]) )
				k=PI[k-1];

			if (s[k]==s[i]) k++;
			PI[i]=k;

			if (PI[i]==0) continue;
			P=i+1 - PI[i];
			if ( (PI[i]*2>=i+1) && ( (i+1)%P==0 ) )
                                        ret=i+1;
		}

		printf("%d\n",ret);
	}
	
	return 0;
}