Cod sursa(job #3301933)

Utilizator Cristian_NegoitaCristian Negoita Cristian_Negoita Data 1 iulie 2025 12:57:24
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");

vector<int> compute_lps(const string &pattern)
{
    vector<int> lps(pattern.size(), 0);
    int k = 0;
    for(int i = 1; i < pattern.size(); i++)
    {
        while(k > 0 && pattern[i] != pattern[k])
            k = lps[k - 1];
        k += (pattern[i] == pattern[k]);
        lps[i] = k;
    }
    return lps;
}

void solve_testcase()
{
    string s;
    fin >> s;
    vector<int> lps = compute_lps(s);
    int max_length = 0;
    for(int i = 1; i < s.size(); i++)
    {
        int k = lps[i], length = i + 1, period = length - k;
        if(k > 0 && length % period == 0)
            max_length = length;
    }
    fout << max_length << "\n";
}

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

    fin.close();
    fout.close();
    return 0;
}