Cod sursa(job #2108731)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 18 ianuarie 2018 19:15:06
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
/// #bettercoderthanshebeautiful
#include<bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int t,L;
int prefix[1000002];
char c[1000002];
int main()
{
    f>>t;
    for(;t;--t)
    {
        int poz=0;
        f>>(c+1);
        int L=strlen(c+1);
        int k=0;
        memset(prefix,0,sizeof(prefix));
        for(int i=2;i<=L;++i)
        {
            while(k && c[i]!=c[k+1])
                k=prefix[k];
            if(c[i]==c[k+1])
                ++k;
            prefix[i]=k;
        }
        for(int i=1;i<=L;++i)
            if(prefix[i] && i%(i-prefix[i])==0)
                poz=i;
        g<<poz<<'\n';
    }
    return 0;
}