Cod sursa(job #1888755)

Utilizator FredyLup Lucia Fredy Data 22 februarie 2017 12:22:23
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstring>
#include <fstream>

using namespace std;

int n, pref[1000005], maxp;
char x[1000005];

int main()
{
    ifstream fin("prefix.in");
    ofstream fout("prefix.out");

    fin >> n;
    fin.getline(x, 1000005);

    while (n--)
    {
        memset(pref, 0, sizeof(pref));
        maxp = 0;
        fin.getline(x, 1000005);

        int size = strlen(x);

        int q = 0;
        for (int i = 1; i < size; ++i)
        {
            while (q != 0 && x[q] != x[i])
                q = pref[q - 1];
            if (x[q] == x[i]) ++q;
            pref[i] = q;

            if (pref[i] != 0 && (i + 1) % ((i + 1) - pref[i]) == 0)
                maxp = i + 1;
        }

        fout << maxp << '\n';
    }

    fin.close();
    fout.close();
}