Cod sursa(job #2362080)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 2 martie 2019 21:47:52
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std ;
ifstream in ("prefix.in") ;
ofstream out ("prefix.out") ;
const int NR = 1000003  ;
int t , n , l , i , best ;
char s [ NR ] ;
int p [ NR ]  ;
int main()
{
    in >> t ;
    while ( t -- )
        {
            best = 0 ;
            l = 0 ;
        in >> s + 1 ;
        n = strlen( s + 1 ) ;
        p [ 1 ] = 0 ;
        for ( i = 2 ; i <= n ; ++ i )
        {
            while ( l && s [ i ] != s [ l + 1 ] )   l = p [ l ] ;
            if ( s [ i ] == s [ l +1 ] )    l ++ ;
            p [ i ] = l ;
            if ( l && l % ( i - l ) == 0 ) best = i ;
        }
        out << best << '\n' ;
        }
}