Cod sursa(job #2989838)

Utilizator Frant_IoanaFrant Ioana Frant_Ioana Data 7 martie 2023 08:34:56
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;

fstream fin("prefix.in");
ofstream fout("prefix.out");

int t;

int main(){

    fin >> t;

    while(t--){

        string s;
        fin >> s;
        int n = s.size();
        s = "*" + s;
        vector<int> p(n + 1);

        int k = 0;
        p[1] = 0;
        for(int i = 2; i <= n; i++){
            while(k > 0 && s[k + 1] != s[i]){
                k = p[k];
            }

            if(s[k + 1] == s[i])
                k++;
            p[i] = k;
        }

        int maxi = 0;
        for(int i = 1; i <= n; i++){
            int idk = i - p[i];
            if(p[i] && i % idk == 0)
                maxi = max(maxi, i);
        }

        fout << maxi << '\n';
    }
}