Cod sursa(job #2988547)

Utilizator matwudemagogul matwu Data 4 martie 2023 20:59:44
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;

int t;
int main(){
    cin.tie(0)->sync_with_stdio(0);
    ifstream fin("prefix.in");
    ofstream fout("prefix.out");
    fin >> t;
    while(t--){
        string s;
        fin >> s;
        int n = s.size();
        s = "^" + s;

        vector<int> p(n + 1);
        int k = 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 ans = 0;
        for(int i = 1; i <= n; i++){
            int d = i - p[i];
            if(p[i] && i % d == 0){
                ans = max(ans, i);
            }
        }
        fout << ans << '\n';
    }
}