Cod sursa(job #2921902)

Utilizator mihneazzzMacovei Daniel mihneazzz Data 2 septembrie 2022 12:54:27
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");

vector<int> prefix_function(char* s) {
    int n = strlen(s);
    vector<int> pi(n);
    for (int i = 1; i < n; i++) {
        int j = pi[i-1];
        while (j > 0 && s[i] != s[j])
            j = pi[j-1];
        if (s[i] == s[j])
            j++;
        pi[i] = j;
    }
    return pi;
}
int main()
{
    int t;char s[1000005];
    fin>>t;
    while(t--)
    {
        fin>>s;
        int n=strlen(s),m=0;
        vector<int>pi=prefix_function(s);
        ///for(int i=0;i<n;i++) cout<<pi[i]<<" ";cout<<"\n";
        for(int i=1;i<=n;i++)
            if(pi[i-1]&&i%(i-pi[i-1])==0) m=max(m,i);
        fout<<m<<"\n";
    }
    return 0;
}