Cod sursa(job #2669976)

Utilizator BogdanTicuTicu Bogdan Valeriu BogdanTicu Data 8 noiembrie 2020 16:20:27
Problema Prefix Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.44 kb
#include <bits/stdc++.h>

using namespace std;

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

string s;
int kmp[1000005];

void solve()
{
	in>>s;
	s="#"+s;
	kmp[1]=0;
	int ans=0,q=0;
	int i=2;
	while(i++<=s.length())
	{
		while(q && s[q+1]!=s[i])
			q=kmp[q];
		if(s[q+1]==s[i])
			q++;
		kmp[i]=q;

		if(kmp[i] && (kmp[i]%(i-kmp[i])==0))
			ans=i;
	}
	out<<ans<<"\n";
}


int main()
{
	int t;
	in>>t;
	while(t--)
		solve();
	return 0;
}