Cod sursa(job #1573330)

Utilizator ArkinyStoica Alex Arkiny Data 19 ianuarie 2016 16:58:12
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
using namespace std;

ifstream in("prefix.in");
ofstream out("prefix.out");
char s[1000010];
int prefix[1000010];
int main()
{

	int T;
	in >> T;
	while (T--)
	{
		in >> s;
		int mx = 0;
		int j = 0;
		for (int i = 1; s[i] != '\0'; ++i)
		{
			while (j > 0 && s[j] != s[i])
				j = prefix[j - 1];
			if (s[j] == s[i])
				++j;
			prefix[i] = j;
			if (prefix[i] * 2 == (i + 1) && i + 1 > mx)
					mx = i + 1;
			else if (mx>0 && prefix[i] * 2 > (i + 1) && prefix[i]%mx==0 && i + 1 > mx)
					mx = i + 1;
		}
		out << mx << '\n';
	}
	

	return 0;
}