Cod sursa(job #2303457)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 16 decembrie 2018 12:42:40
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int nr_teste,n,phi[1000005];
char ch[1000010];
int solve()
{
    f.getline(ch,1000005);
    n=strlen(ch);

    phi[0]=0;
    int rez=0;
    for(int i=1;i<n;i++)
    {
        while(rez>0 && ch[i]!=ch[rez])
        {
            rez=phi[rez-1];
        }
        if(ch[rez]==ch[i])rez++;
        phi[i]=rez;
    }

    int Max=0;
    for(int i=0;i<n;i++)
    {
        if((i+1)-phi[i]<i+1 && (i+1)%((i+1)-phi[i])==0)
        {
            Max=i+1;
        }
    }
    g<<Max<<'\n';
}
int main()
{
    f>>nr_teste;
    f.get();
    for(;nr_teste;nr_teste--)
    {
        solve();
    }
    return 0;
}