Cod sursa(job #819559)

Utilizator ioanabIoana Bica ioanab Data 19 noiembrie 2012 12:03:07
Problema Prefix Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <fstream>
#include <string>
using namespace std;

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

const int N=1000005;
char s[N];
int pi[N];

int main()
{
	int n,m,k,i,max;
	in>>m;
	while(m--)
	{
		in>>s+1;
		
		k=0;
		pi[1]=0;
	
		for(i=2;s[i]!='\0';i++)
		{
			while(s[k+1]!=s[i] && k>0)
				k=pi[k];
			if(s[k+1]==s[i])
				k++;
			pi[i]=k;
		}
		n=i-1;
		max=0;
		for(i=1;i<=n;i++)
		{
			if(i%(i-pi[i])==0 && pi[i]!=0)
				if(i>max)
					max=i;
		}
		
		out<<max<<"\n";
	}
	
	return 0;
}