Cod sursa(job #584458)

Utilizator bugyBogdan Vlad bugy Data 25 aprilie 2011 16:24:51
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
#include<string.h>
#define dim  1000001
using namespace std;

int m,urm[dim],x,k,i,a,n;
char P[dim];
FILE *f=fopen("prefix.in","r"), *g=fopen("prefix.out","w");

void prefix()
{	
	a=k=0;;
	
	memset(urm,0,sizeof urm);	
	
	for(x=2;x<=m;x++)
	{
		while( k && P[k+1]!=P[x] )
			k=urm[k];
		
		if(P[k+1]==P[x])
			k++;
		
		urm[x]=k;
		if(x%(x-k)==0&&k)
			a=x;
	}
	
	fprintf(g,"%d\n",a);

}


int main()
{
	
	
fscanf(f,"%d",&n);
	P[0]='0';
	
for(i=1;i<=n;i++)
{
	fscanf(f,"%s",&P[1]);
	m=strlen(P)-1;
	prefix();

}

fprintf(g,"\n");
fclose(f);
fclose(g);



return 0;
}