Cod sursa(job #3309167)

Utilizator calinarulMarinescu Calin calinarul Data 1 septembrie 2025 22:39:49
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int NMAX=1e6+5;
int lps[NMAX];
void prebuilt(string pattern)
{
    for(int i=0;i<=pattern.size();i++)lps[i]=0;

    lps[0]=0;
    int i=1;
    int length=0;
    int m=pattern.size();
    while(i<m)
    {
        if(pattern[i]==pattern[length])
        {
            length++;
            lps[i]=length;
            i++;
        }
        else
        {
            if(length>0)
            {
                length=lps[length-1];
            }
            else
            {
                lps[i]=0;
                i++;
            }
        }
    }
}
void solve()
{
    string a;
    fin>>a;
    prebuilt(a);
    int ans=0;
    for(int i=0;i<a.size();i++)
    {
        int k=i+1-lps[i];
        if((i+1)%k==0 && lps[i]>0 && k>0)ans=i+1;
    }
    fout<<ans<<'\n';
}
int main()

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