Pagini recente » Cod sursa (job #2444879) | Cod sursa (job #1243054) | Cod sursa (job #1808211) | Cod sursa (job #2571569) | Cod sursa (job #3150948)
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
char s[1000005], a[1000005];
int n, test_cases, pi[1000005], l, maxi;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int32_t main(int argc, char * argv[])
{
fin >> test_cases;
while(test_cases--)
{
fin >> s;
strcpy(a + 1, s);
int n = strlen(a + 1);
pi[1] = 0, l = 0, maxi = 0;
for(int i = 2; i <= n; ++i)
{
while(l != 0 && a[i] != a[l + 1])
{
l = pi[l];
}
if(a[i] == a[l + 1])
{
l++;
}
pi[i] = l;
if(l > 0 && i % (i - l) == 0)
{
if(i > maxi)
{
maxi = i;
}
}
}
fout << maxi << '\n';
}
return 0;
}