Cod sursa(job #1571143)

Utilizator c0mradec0mrade c0mrade Data 17 ianuarie 2016 12:17:21
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<fstream>
#include<string.h>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");

int T,l,q,m,p[1000001];
char s[1000001];

int main(){
    in>>T;
    while(T--){
        in>>s+1;
        l=strlen(s+1);
        q=0;m=0;
        for(int i=2;i<=l;++i)
        {
            while(q && s[i]!=s[q+1]) q=p[q];
            if(s[i]==s[q+1]) ++q;
            p[i]=q;
        }
        for(int i=l;i;--i)
            if(p[i] && i%(i-p[i])==0){
                m=i;break;
            }
        out<<m<<'\n';
    }
    return 0;
}