Cod sursa(job #2921899)

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

using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int n,ans;int pi[1000005];
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 && s[i] != s[j])
            j = pi[j-1];
        if (s[i] == s[j])
            j++;
        pi[i] = j;
    }
    return pi;
}
int main()
{
    int t;string s;
    fin>>t;
    while(t--)
    {
        fin>>s;
        n=s.length();ans=0;

    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;
    }
        ///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) ans=i;
        fout<<ans<<"\n";
    }
    return 0;
}