Cod sursa(job #3202933)

Utilizator laurentiu.maticaMatica Laurentiu-Andrei laurentiu.matica Data 12 februarie 2024 18:07:34
Problema Prefix Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
// #include <iostream>

#include <fstream>
#include <string>

using namespace std;

ifstream cin("prefix.in");
ofstream cout("prefix.out");
int lps[1000001] = { 0 };

int main()
{
	int n, r=0;
	cin >> n;
	cin.get();
	for (int it = 0; it < n; it++)
	{
		string a;
		getline(cin, a);
		int q = 0, m=a.size();
		for (int i = 2; i <= m; i++)
		{
			while (q && a[q] != a[i - 1])
				q = lps[q];
			if (a[q] == a[i - 1])
				q++;
			lps[i] = q;

			if (i % (i - lps[i]) == 0 && lps[i])
				r = i;
		}
		cout << r << '\n';
	}
	return 0;
}