Cod sursa(job #733581)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 12 aprilie 2012 16:30:17
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
char c[1000001];
int v[1000001],n;
void prefix()
{
	int i,q;
	q=0;
	v[1]=0;
	for(i=2;i<=n;i++) {
		while((q)&&(c[i]!=c[q+1]))
			q=v[q];
		if(c[i]==c[q+1])
			q++;
		v[i]=q;
	}
}
int main ()
{
	int t,i,j,max;
	ifstream f("prefix.in");
	ofstream g("prefix.out");
	f>>t;
	for(i=1;i<=t;i++) {
		f>>c;
		n=strlen(c)-1;
		for(j=n;j>=0;j--)
			c[j+1]=c[j];
		c[0]=' ';
		n++;
		prefix();
		max=0;
		for(j=1;j<=n;j++)
			if((v[j])&&(j%(j-v[j])==0)&&(j>max))
				max=j;
		g<<max<<'\n';
	}
	f.close();
	g.close();
	return 0;
}