Cod sursa(job #1227242)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 9 septembrie 2014 18:47:54
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <fstream>
#include <cstring>
#define DIM 1000005

using namespace std;

ifstream f("prefix.in");
ofstream g("prefix.out");

char S[DIM];

int Pi[DIM];

int T;

int main() {
	f >> T;
	f.get();
	while (T--) {
		f >> S + 1;
		Pi[1] = 0;
		for (int i = 2; S[i] != 0; ++i) {
			int q = Pi[i - 1];
			while (q && S[i] != S[q + 1])
				q = Pi[q];
			if (S[i] == S[q + 1])
				Pi[i] = q + 1;
			else
				Pi[i] = 0;
		}
		int sol = 0;
		for (int i = 1; S[i] != 0; ++i)
		if (Pi[i] != 0 && i % (i - Pi[i]) == 0)
			sol = i;
		g << sol << "\n";
	}
	return 0;
}