Cod sursa(job #2108676)

Utilizator DeleDelegeanu Alexandru Dele Data 18 ianuarie 2018 18:24:16
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
const int MAX=1000002;
int t,l,q,i,n,j,poz,k,urm[MAX];
char s[MAX];
void prefix(){
    k=0;
    urm[1]=0;
    t=strlen(s);
    for(q=2 ; q<=t ; ++q)
    {
        while(k>0&&s[q]!=s[k+1])
            k=urm[k];
        if(s[q]==s[k+1])
            k++;
        urm[q]=k;
    }
}
int main()
{

    f>>n;
    for(i=1;i<=n;++i)
    {
        f>>s+1;
        s[0]='*';
        k=0;
        poz=0;
        prefix();
        l=strlen(s);
        for(j=1;j<=l;++j)
            if(urm[j]&&j%(j-urm[j])==0)
                poz=j;
        g<<poz<<'\n';
    }
    return 0;
}