Cod sursa(job #2447451)

Utilizator Briana_NeaguNeagu Briana Briana_Neagu Data 13 august 2019 13:45:18
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 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 ans = 0;
        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] ++;
            if (dp[i] != -1 && (i + 1) % (i - dp[i]) == 0)
                ans = i + 1;
        }
        g << ans << '\n';
    }
}