Cod sursa(job #3331925)

Utilizator AlexandruCorneaCornea Alexandru Mihai AlexandruCornea Data 1 ianuarie 2026 21:35:29
Problema Prefix Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
char s[1000001];
int pi[1000001],lung_pref;
int main()
{
    int t;
    fin>>t;
    fin.getline (s,3);
    for (int i=1; i<=t; i++)
    {
        fin.getline(s,1000000);

        int n=strlen(s)-1,maxi=0;
        for (int j=0; j<=n; j++)
            pi[j]=0;

        for (int j=1; j<=n; j++)
        {
            while (lung_pref>0 && s[j]!=s[lung_pref])
            {
                lung_pref=pi[lung_pref-1];
            }
            if (s[lung_pref]==s[j])
                lung_pref++;

            if ((j+1)%(j-lung_pref+1)==0 && lung_pref!=0)
            {
                maxi=max(maxi,j+1);
            }
            pi[j]=lung_pref;
        }
        fout<<maxi<<'\n';
    }
    return 0;
}