Cod sursa(job #2654840)

Utilizator tudorbuhniaTudor Buhnia tudorbuhnia Data 2 octombrie 2020 14:50:35
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
using namespace std;
string zero=" ";
int pi[1000005];
int main()
{
    ifstream cin("prefix.in");
    ofstream cout("prefix.out");
    int t,n,l,ans;
    cin >> t;
    while(t--)
    {
        string a;
        cin >> a;
        n=a.size();
        a=zero+a;
        ans=0;
        l=0;
        for(int i=2; i<=n; i++)
        {
            while(l>0 && a[l+1]!=a[i])
                l=pi[l];
            if(a[l+1]==a[i])
                l++;
            pi[i]=l;
            if(l>0 && i%(i-l)==0)
                ans=i;
        }
        cout << ans << '\n';
    }
    return 0;
}