Cod sursa(job #598895)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 27 iunie 2011 14:39:37
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb

#include <cstdio>
#include <fstream>
#include <cstring>

using namespace std;

int p[1000001];
char v[1000001];

int main ()
{
	
	int t,n,m,q,i;
	ifstream in ("prefix.in");
	freopen ("prefix.out","w",stdout);
	in>>t;
	in.getline(v,1000001);
	for(;t;--t){
		memset(p,0,sizeof(p));
		m=0;
		in.getline(v,1000001);
		n=strlen(v);
		q=0;
		for(i=1;i<n;++i){
			for(;q&&v[q]!=v[i];q=p[q-1]);
			if(v[q]==v[i])
				++q;
			p[i]=q;
			if(p[i]&&!((i+1)%((i+1)-p[i])))
				m=i+1;
			}
			printf("%d\n",m);
		}
	
	return 0;}