Cod sursa(job #2811124)

Utilizator SeracovanuEdwardSeracovanu Edward SeracovanuEdward Data 1 decembrie 2021 12:14:51
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;
string s;
int rez(string s,int n){
int q=0,ans=0;
vector <int> pi((int)s.size(), 0);
pi[1]=0;
for(int i=2;i<=n;++i){
    while(q && s[q+1]!=s[i])
        q=pi[q];
    if(s[q+1]==s[i])
        ++q;
pi[i]=q;
}
pi.erase(pi.begin());
for(int i=s.size()-1;i>=1;i--)
    if(pi[i]>0 && (i+1)%(i+1-pi[i])==0)
        return i+1;
return 0;
}
int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin>>t;
    while(t--){
        cin>>s;
        s.insert(s.begin(),' ');
        cout<<rez(s,s.size()-1)<<"\n";
    }
}