Cod sursa(job #2479891)

Utilizator Mada2003Madalina Scarlat Mada2003 Data 24 octombrie 2019 17:32:22
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <cstring>

using namespace std;

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

int n, phi[1000005], rasp, t, x;
string s;

int main()
{
    cin >> t;
    for(int k = 1; k <= t; k++)
    {
        cin >> s;
        phi[0] = -1;
        n = s.size();
        for(int i = 1; i < n; i++)
        {
            x = i - 1;
            while(s[phi[x] + 1] != s[i] && phi[x] != -1)
                x = phi[x];
            if(s[phi[x] + 1] == s[i])
                phi[i] = phi[x] + 1;
            else
                phi[i] = -1;
        }
        rasp = 0;
        for(int i = n - 1; i >= 0; i--)
        {
            if(phi[i] != -1 && (i + 1) % (i - phi[i]) == 0)
            {
                rasp = i + 1;
                break;
            }
        }
        cout << rasp << "\n";
    }
    return 0;
}