Cod sursa(job #2724796)

Utilizator Albert_GAlbert G Albert_G Data 17 martie 2021 21:02:49
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream in("prefix.in");
ofstream out("prefix.out");

const int N =1e6;
char v[N+2];
int lps[N+2];
int main()
{
    int t;
    in>>t;
    for(int i=0; i<t; ++i)
    {
        in>>(v+1);
        int n = strlen(v+1);
        int k=2,len=0;
        lps[1] = 0;
        int rez=0;
        while(k<=n)
        {
            while(len>0 && v[len+1]!=v[k])
                len = lps[len-1];
            if(v[k]==v[len+1])
            {
                ++len;
                lps[k]=len;
            }
            else
            {
                lps[k]=0;
            }
            if(len>0 && k%(k-len)==0)
            {
                rez = max(rez,k);
            }
            ++k;
        }
        out<<rez<<'\n';
    }
    return 0;
}