Cod sursa(job #1573341)

Utilizator ArkinyStoica Alex Arkiny Data 19 ianuarie 2016 17:11:26
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 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 j = 0,i;
		for (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;

		}
		--i;
		for (; i>0; --i)
			if (prefix[i] * 2 == (i + 1))
			{
				out << i + 1<<'\n';
				break;
			}
			else if (prefix[i] * 2 > (i + 1) && prefix[i]%((i+1)-prefix[i])== 0)
			{
				out << i + 1<<'\n';
				break;
			}
		if (i == 0)
			out << 0<<'\n';
	}
	

	return 0;
}