Cod sursa(job #2448402)

Utilizator Carol_LucaCarol Luca Carol_Luca Data 16 august 2019 20:23:21
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

#define maxim 1000000



using namespace std;



ifstream f("prefix.in");

ofstream g("prefix.out");



int dp[maxim];



int main()

{

    int t;

    f >> t;

    while (t --)

    {

        string a;

        f >> a;

        int n = a.length();

        dp[0] = -1;

        for (int i = 1; i < n; ++ i)

        {

            int j = i - 1;

            while (dp[j] != -1 && a[i] != a[dp[j] + 1])

                j = dp[j];



            dp[i] = dp[j];

            if (a[i] == a[dp[j] + 1])

                dp[i] ++;

        }

        bool ok = 1;

        for (int i = n - 1; i >= 0; -- i)

            if (dp[i] != -1 && (i + 1) % (i - dp[i]) == 0)

            {

                ok = 0;

                g << i + 1 << '\n';

                break;

            }

        if (ok)

          g << 0 << '\n';

    }

}