Cod sursa(job #36968)

Utilizator IgnitionMihai Moraru Ignition Data 24 martie 2007 13:26:07
Problema Prefix Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define MN (1048576)

int prefix[MN];
char line[MN];

int main()
{
	int T;

	freopen("prefix.in", "r", stdin);
	freopen("prefix.out", "w", stdout);
	for(scanf("%d ", &T); T --; ) {
		int i, k, r = 0;
		fgets(line+1, MN, stdin);
		prefix[1] = 0;
		for(i = 2, k = 0; isalpha(line[i]); ++ i) {
			while(k && line[k+1] != line[i])
				k = prefix[k];
			if(line[k+1] == line[i])
				++ k;
			prefix[i] = k;
			if(k && (i%(i-k) == 0))
				r = i;
		}
		printf("%d\n", r+(r%2));
	}
	fclose(stdin);
	fclose(stdout);

	return 0;
}