Cod sursa(job #2288934)

Utilizator alexandruilieAlex Ilie alexandruilie Data 24 noiembrie 2018 09:44:07
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <string.h>

using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int t,urm[1000005],p[1000005],i1,i,k,j,l;
char s[1000005];
int main()
{
    f>>t;
    for(i1=1;i1<=t;i1++)
    {
        f>>s+1;
        k=0;
        l=strlen(s+1);
        for(i=2;i<=l;i++)
        {
            for(;k!=0&&s[k+1]!=s[i];) k=p[k];
            if(s[k+1]==s[i]) k++;
            urm[i]=k;
        }
        for(j=l;j>=1;j--)
        {
            if(urm[j]!=0&&j%(j-urm[j])==0)
            {
                g<<j<<'\n';
                break;
            }
            if(j==1) g<<0<<'\n';
        }

    }
    return 0;
}