Cod sursa(job #2736037)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 3 aprilie 2021 09:28:18
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>

using namespace std;

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

int main()
{
    int t; f >> t;

    while (t--)
    {
        string s; f >> s;

        int n = s.size();

        int* p = new int[n + 1];

        p[0] = 0;

        int ans = 0;

        int k = 0;
        for (int i = 1; i < n; i++)
        {
            while (k > 0 && s[i] != s[k])
                k = p[k - 1];

            if (s[i] == s[k])
                k++;

            p[i] = k;

            if (k && (i + 1) % (i + 1 - k) == 0)
                ans = i + 1;
        }

        g << ans << "\n";

        delete[] p;
    }

    return 0;
}