Cod sursa(job #1013384)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 20 octombrie 2013 20:37:06
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");

int pi[1000005], sol, k, t;
char s[1000005];

int main()
{
    f>>t;
    for (; t>0; --t)
    {
        f>>(s+1);
        int i=2; sol=k=0;

        while (s[i])
        {
            while (k && s[i]!=s[k+1]) k=pi[k];
            if (s[i]==s[k+1]) ++k;
            pi[i++]=k;
        }

        for (i=strlen(s+1); i>1; --i)
            if (pi[i] && i-pi[i]!=0 && i%(i-pi[i])==0)
                sol=i, i=0;
        g<<sol<<'\n';
    }
    return 0;
}