Cod sursa(job #2424686)

Utilizator ezioconnorVlad - Gabriel Iftimescu ezioconnor Data 23 mai 2019 17:51:20
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <cstring>

using namespace std;

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

char s[1000001];
int f[1000001];

int main()
{
    int n, t;
    in >> t;
    while (t--)
    {
        in >> (s + 1);
        n = strlen(s + 1);
        f[1] = 1;
        int maxim = 0;
        for (int i = 2, j = 1; i <= n; ++i)
        {
            while (j > 1 && s[i] != s[j])
                j = f[j - 1];
            if (s[i] == s[j])
                f[i] = ++j;
            else
                f[i] = 1;
            if (f[i] != 1 && (i == f[i] || i % (i - f[i] + 1) == 0))
                maxim = i;
        }
        out << maxim << '\n';
    }
    return 0;
}