Cod sursa(job #733324)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 11 aprilie 2012 20:41:21
Problema Prefix Scor 90
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(){
	
	n=strlen(s+1);
	
	p[1]=0;
	k=0;
	int i;
	int maxu=0;
	for(i=2;i<=n;i++){
		
		while( k>0  && s[k+1]!=s[i] )
			k=p[k];
		
		if(s[k+1]==s[i])
			k++;
		if(k>0 )
			if(i%(i-k)==0){
				maxu=i;
				
				}
		p[i]=k;
		
	}
	
	g<<maxu<<"\n";
	
}
int main () {
	
	f>>t;
	f.get();
	for(   ; t ; t--   )  {
		
		f.getline(s+1,dim);
	
		prefix();
		
	}
 	
	return 0;
	
}