Cod sursa(job #3250030)

Utilizator vlad7654vladimir manescu vlad7654 Data 19 octombrie 2024 09:30:26
Problema Prefix Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
vector<int> prefix_function(string s) {
    int n = (int)s.length();
    vector<int> pi(n);
    for (int i=1;i<n; i++) {
        int j=pi[i-1];
        while(j>0 and s[i] != s[j]){
            j=pi[j-1];
        }
        if(s[i] == s[j]){
            j++;
        }
        pi[i]=j;
    }
    return pi;
}
int main(){
    int t, ans=0;
    fin>>t;
    while(t--){
        string s;
        fin>>s;
        vector<int> kmp=prefix_function(s+'#');
        for(int i=1;i<kmp.size();i++){
            if(kmp[i] and (i+1)%(i+1-kmp[i])==0){
                ans=i;
            }
        }
        if(ans==0){
            fout<<0<<'\n';
        }else{
            fout<<ans+1<<'\n';
        }
    }
}