Cod sursa(job #1883347)

Utilizator robertkarolRobert Szarvas robertkarol Data 17 februarie 2017 21:52:54
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <bits/stdc++.h>
#define lmax 1000002
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char s[lmax];
int n,i,l,pi[lmax],j,out;
void prefix()
{
    int k=0,i;
    for(i=2;i<=l;i++)
    {
        while(k&&s[k+1]!=s[i]) k=pi[k];
        if(s[k+1]==s[i]) k++;
        pi[i]=k;
    }
}
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>(s+1);
        l=strlen(s+1); out=0;
        memset(pi,0,sizeof(pi));
        prefix();
        for(j=1;j<=l;j++)
            if(pi[j]&&j%(j-pi[j])==0) out=j;
        fout<<out<<"\n";
    }
    return 0;
}