Cod sursa(job #2467578)

Utilizator TheNextGenerationAyy LMAO TheNextGeneration Data 4 octombrie 2019 17:25:54
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
const int N = 1e6+5;
int pi[N], n;
char a[N];
void PiTable()
{
    int q = 0;
    pi[1] = 0;
    for (int i = 2; i<=n; i++)
    {
        while (a[i]!=a[q+1] && q>0)
            q = pi[q];
        if (a[i] == a[q+1])
            q++;
        pi[i] = q;
    }
}
int main()
{
    int t;
    in >> t;
    while (t--)
    {
        in >> (a+1);
        n = strlen(a+1);
        PiTable();
        int Max = 0;
        for (int i = 2; i<=n; i++)
            if (pi[i] && i%(i-pi[i]) == 0)
                Max = max(Max,i);
        out << Max << "\n";
    }
}