Cod sursa(job #1802727)

Utilizator nicholascantarNicholas David Cantar Gogitidze nicholascantar Data 10 noiembrie 2016 16:44:39
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
#include <cstring>
using namespace std;
int lng,n,i,j,k,urm[1000010],ok;
char s[1000010];
int main()
{
    ifstream fin ("prefix.in");
    ofstream fout ("prefix.out");
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>s;
        lng=strlen(s);
        k=0;
        urm[1]=0;
        for (j=2;j<=lng;j++)
        {
            while(k>0&&s[k]!=s[j-1]) k=urm[k];
            if(s[k]==s[j-1]) k++;
            urm[j]=k;
        }
        ok=1;
        for(j=lng;j>=1;j--)
        if(urm[j]!=0&&(j%(j-urm[j]))==0){ok=0;fout<<j<<'\n';break;}
        if(ok==1) fout<<0<<'\n';
    }
    return 0;
}