Cod sursa(job #2562221)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 29 februarie 2020 12:51:39
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("prefix.in") ;
ofstream fout("prefix.out") ;

vector<int> prefix(string sir)
{
    int n , i , j ;
    n = sir.size() ;
    vector<int> pr(n);
    pr[0] = 0 ;
    for ( i = 1 ; i < n ; i++ )
    {
        j = pr[i-1] ;
        while ( j > 0 && sir[i] != sir[j] )
            j = pr[j-1] ;
        if ( sir[i] == sir[j] )
            j++ ;
        pr[i] = j ;
    }
    return pr ;
}


int main()
{
    int t,sol,n,i;
    string s;
    vector<int> v;
    fin >> t ;
    while ( t-- )
    {
        fin >> s ;
        v = prefix(s) ;
        n = s.size() ;
        sol = 0;
        for ( i = n-1 ; i > 0 ; i-- )
        {
            if ( (i+1)%(i+1-v[i]) == 0 && v[i] )
            {
                sol = i+1 ;
                break ;
            }
        }
        fout << sol << '\n' ;
    }
}