Cod sursa(job #2713994)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 1 martie 2021 02:57:11
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
/*
*  Created by Andrei Arhire 01/03/2021
*  Copyright © 2021 Andrei Arhire. All rights reserved.
*  Expected verdict - Accepted
*/
#include <bits/stdc++.h>

#define pb push_back
#define zero(pos) pos&(-pos)
#define eb emplace_back
#define mp make_pair
using namespace std;
const long long NR = 1e6 + 1e2;
const long long oo = 1e16;

int t ;
string s ;
vector < int > P ( NR , 0 ) ;
ifstream in ("prefix.in");
ofstream out ("prefix.out");
signed main() {
    ios::sync_with_stdio(false);
    in.tie(nullptr);
    int i , L = 0 ;
    in >> t ;
    while ( t -- )  {
        int sol = 0 ;
        L = 0 ;
        in >> s ;
        for ( i = 1 ; i < s.size() ; ++ i ) {
            while ( L && s [ i ] != s [ L ] )   {
                L = P [ L - 1 ] ;
            }
            if ( s [ i ] == s [ L ] )   {
                ++ L ;
            }
            P [ i ] = L ;
            if ( L && L % ( i + 1 - L ) == 0 )  {
                sol = i + 1 ;
            }
        }
        for ( i = 0 ; i < s.size() ; ++ i ) {
            P [ i ] = 0 ;
        }
        out << sol << '\n' ;
    }

    return 0;
}