Cod sursa(job #2803292)

Utilizator JaguarKatStere Teodor Ioanin JaguarKat Data 19 noiembrie 2021 19:14:46
Problema Prefix Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <bits/stdc++.h>

using namespace std;

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

string str;
int urmator[100001];

void kmp()
{
	int k = 0, res = 0, len = str.length();
	for(int i = 2; i <= len; ++i)
	{
		while(k > 0 and str[k] != str[i - 1])
		{
			k = urmator[k];
		}
		if(str[k] == str[i - 1])++k;
		urmator[i] = k;
		if(i % (i - urmator[i]) == 0 and urmator[i] != 0)
		{
			res = i;
		}
	}
	fout << res << '\n';
}

int main()
{
	int T;
	fin >> T;
	for(int i = 1; i <= T; ++i)
	{
		fin >> str;
		kmp();
	}
	return 0;
}