Cod sursa(job #733346)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 11 aprilie 2012 21:19:06
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
#include<cstring>
#define dim 1000007
using namespace std;

ifstream f("prefix.in");
ofstream g("prefix.out");
char s[dim];
int p[dim],k,i,t,n;
void prefix(){
	
	
	
	p[1]=0;
	k=0;
	int i;
	for(i=2;i<=n;i++){
		
		while( k>0  && s[k+1]!=s[i] )
			k=p[k];
		
		if(s[k+1]==s[i])
			k++;
		p[i]=k;
		
	}
	
	
}
int main () {
	
	f>>t;
	f.get();
	for(   ; t ; t--   )  {
		
		f.getline(s+1,dim);
		n=strlen(s+1);
		prefix();
		bool ok=0;
		for(int i=n;i>=1;i--)
			if(p[i]>0 && (i%(i-p[i]))==0){
				g<<i<<"\n";
				ok=1;
				break;
			}
		if(!ok)
			g<<0<<"\n";
	}
	return 0;
	
}