Cod sursa(job #1966866)

Utilizator danstefanDamian Dan Stefan danstefan Data 15 aprilie 2017 16:59:53
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;
int n,in,k,phi[1000010],i,lu,ma,pm;
char st[1000010];
int main()
{
    ifstream f ("prefix.in");
    ofstream g ("prefix.out");
    f>>n;
    for(in=1; in<=n; ++in)
    {
        f>>st+1;
        k=0;
        phi[1]=0;
        lu=strlen(st+1);
        ma=0;
        pm=1;
        for(i=2; i<=lu; ++i)
        {
            while(k>0&&st[k+1]!=st[i])k=phi[k];
            if(st[i]==st[k+1])++k;
            phi[i]=k;
            if(phi[i]>ma)ma=phi[i],pm=i;
        }
        if(ma==0)g<<ma<<'\n';
        else
        {
            pm-=ma;
            ma/=pm;
            g<<(ma+1)*pm<<'\n';
        }
    }
    return 0;
}