Cod sursa(job #293166)

Utilizator socheoSorodoc Ionut socheo Data 31 martie 2009 23:56:31
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>
#include<string.h>
char a[1000002];
int km[1000002],n,i,m,max;
void prefix()
{ km[1]=0;
  int k=0;
  for(int q=2;q<=m;q++)
	{  while(a[q]!=a[k+1]&&k>0)
		  k=km[k];
	 if(a[q]==a[k+1])
       k++;
       km[q]=k;
	   if(km[q]>0&&q%(q-k)==0&&q>max) max=q;
	}
}	

int main()
{freopen("prefix.in","r",stdin);
 freopen("prefix.out","w",stdout); 
 scanf("%d",&n);
 for(i=1;i<=n;i++)
 { max=0;
	 scanf("%s",a);
  m=strlen(a)-1;
	for(int j=m;j>=0;j--)
		a[j+1]=a[j];
	a[0]=' ';
	m++;
	prefix();
  if(m>1)
	  printf("%d\n",max);
  else printf("0\n");
 }
	
	
	return 0;}