Cod sursa(job #1382112)

Utilizator TibixbAndrei Tiberiu Tibixb Data 8 martie 2015 14:40:14
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
#include<cstring>
using namespace std;
int T, i, p[1000003], L, n;
char a[1000003];
ifstream in("prefix.in");
ofstream out("prefix.out");
int main(){
    in>>T;
    for(;T--;){
        in>>a+1;
        n=strlen(a+1);
        L=0;
        for(i=2; i<=n; i++){
            p[i]=0;
            while(L!=0 && a[i]!=a[L+1])
                L=p[L];
            if(a[i]==a[L+1])
                L++;
            p[i]=L;
        }
        for(i=n; i>=1; i--){
            if(p[i]>0 && i%(i-p[i])==0){
                out<<i<<"\n";
                break;
            }
        }
        if(i==0)
            out<<"0\n";
    }
return 0;
}