Cod sursa(job #479253)

Utilizator darrenRares Buhai darren Data 23 august 2010 14:03:37
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <cstring>
#include <fstream>

using namespace std;

int n, pref[1000005], maxp;
char x[1000005];

int main()
{
	ifstream fin("prefix.in");
	ofstream fout("prefix.out");

	fin >> n;
	fin.getline(x, 1000005);

	while (n--)
	{
		memset(pref, 0, sizeof(pref));
		maxp = 0;
		fin.getline(x, 1000005);

		int size = strlen(x);

		int q = 0;
		for (int i = 1; i < size; ++i)
		{
			while (q != 0 && x[q] != x[i])
				q = pref[q - 1];
			if (x[q] == x[i]) ++q;
			pref[i] = q;

			if (pref[i] != 0 && (i + 1) % ((i + 1) - pref[i]) == 0)
				maxp = i + 1;
		}

		fout << maxp << '\n';
	}

	fin.close();
	fout.close();
}