Cod sursa(job #447003)

Utilizator siminescuPaval Cristi Onisim siminescu Data 27 aprilie 2010 12:35:15
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.47 kb
#include<fstream>
#define nmax 1000002
using namespace std;
int L[nmax],m;
char P[nmax];
int pattern()
{
	int p,k,max=0;L[1]=0;
	for(p=2;p<=m;p++)
	{
		k=L[p-1];
		while(k>0 && P[k+1]!=P[p]) k=L[k];
		if(P[k+1]==P[p]) k++;
		L[p]=k;
		if(k && p%(p-k)==0) max=p;
	}
	return max;
}
int main()
{
	ifstream f("prefix.in");
	int t;f>>t;f.get();
	ofstream g("prefix.out");
	for(;t;--t)
	{
		f.getline(P+1,nmax,'\n');
		m=strlen(P+1);
		g<<pattern()<<'\n';
	}
}