Cod sursa(job #1094848)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 29 ianuarie 2014 22:02:16
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <cstring>

using namespace std;

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

char s[1000002];
int pi[1000002],fr[1000002];
int n,maxv,k,t;

int main()
{
    fin>>t;

    for (;t; --t)
    {
        fin>>(s+1);

        n = strlen(s+1);

        pi[1] = 0;
        fr[1] = 1;
        k = 0;
        maxv = 0;

        for (int i=2; i<=n; ++i)
        {
            while (s[i]!=s[k+1] && k != 0)
                k = pi[k];

            if (s[i]==s[k+1])
                ++k;

            pi[i] = k;

            if (k!=0 && i % (i-k) == 0)
              maxv = i;
        }

        fout<<maxv<<"\n";
    }
}