Cod sursa(job #2863212)

Utilizator Y.MalmsteenB.P.M. Y.Malmsteen Data 6 martie 2022 14:23:07
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>

using namespace std;
const int NMAX = 1000001;

char A[NMAX + 1];
int m, p[NMAX];

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

int prefix()
{
    int k = 0, per = 0;
    p[1] = 0;
    for(int i = 2; i <= m; i++)
    {
        while(k > 0 && A[i] != A[k + 1])
            k = p[k];
        if(A[i] == A[k + 1])
            k++;
        p[i] = k;
        if(k > 0 && i % (i - k) == 0)
            per = i;
    }
    return per;
}

int main()
{
    int T;
    f >> T;
    f.get();
    while(T--)
    {
        f.getline(A + 1, NMAX);
        m = f.gcount() - 1;
        g << prefix() << '\n';
    }
    f.close();
    g.close();
    return 0;
}