Cod sursa(job #3346450)

Utilizator parrot279Sofi Tudose parrot279 Data 13 martie 2026 16:44:04
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int nmax = 1e6+2;
void solve();

string s;
int n, kmp[nmax];

int main()
{
    int t;
    fin>>t;
    while(t--)
        solve();

    return 0;
}

void solve()
{
    fin>>s;
    n = s.size();
    s = "@" + s;

    for(int i = 1; i <= n; ++i)
        kmp[i] = 0;

    int best = 0;

    for(int i = 2; i <= n; ++i)
    {
        int l = kmp[i-1];
        while(l > 0 && s[i] != s[l+1])
            l = kmp[l];

        if(s[i] == s[l+1])
            ++l;
        kmp[i] = l;
        if(kmp[i] > 0 && i % (i - kmp[i]) == 0)
            best = max(best, i);
    }
    fout<<best<<"\n";
}