Cod sursa(job #2253188)

Utilizator YouDontNeedMyNameJurcut Paul YouDontNeedMyName Data 3 octombrie 2018 19:00:41
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char s[1000003];
int n,m,lps[1000005],ma;
void fnd_lps()
{
    int k=0;
    m=strlen(s);
    for(int i=1; i<m; i++)
    {
        if(s[k]==s[i])
        {
            k++;
        }
        else
        {
            k=0;
            if(s[k]==s[i])
                k++;
        }
        lps[i]=k;
    }
}
int main()
{
    in >> n;
    for(int i=1; i<=n; i++)
    {
        in >> s;
        fnd_lps();
        ma=0;
        for(int j=0; j<m; j++)
        {
            if(lps[j]==0) continue;
            if(lps[j]==j+1) continue;
            if((j+1)%(j-lps[j]+1)==0 && j+1>ma)
            {
                ma=j+1;
            }
        }
        out << ma << '\n';
    }
    return 0;
}