Cod sursa(job #2307671)

Utilizator PopeangaMihneaPopeanga Mihnea- Stefan PopeangaMihnea Data 25 decembrie 2018 13:22:33
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

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

const int L=1000000;
int pi[L+1];
char sir[L+1];
int t;

void prefix_function(int l)
{
    int k=0;
    pi[1]=0;
    for(int q=2; q<=l; ++q)
    {
        while(k>0 && sir[q]!=sir[k+1]) k=pi[k];
        if(sir[k+1]==sir[q]) ++k;
        pi[q]=k;
    }
}

int main()
{
    fin>>t;
    while(t--)
    {
        fin>>(sir+1);
        int l=strlen(sir+1);
        prefix_function(l);

        int sol=0;
        for(int i=l; i>=1; --i)
        {
            if(pi[i]>0 && i%(i-pi[i])==0)
            {
                sol=i;
                break;
            }
        }
        fout<<sol<<"\n";
    }
    return 0;
}