Cod sursa(job #1888748)

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

using namespace std;

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

#define lim 1000005
int n, pref[lim], maxp;
char x[lim];

int main()
{
    fin >> n;
    fin.getline(x, lim);

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

        int l=strlen(x);

        int q=0;
        for (int i=1; i<l; ++i)
        {
            while (q!=0 && x[q+1]!=x[i])
                q=pref[q];
            if (x[q+1] == 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();
}