Cod sursa(job #2593374)

Utilizator cyg_vladioanBirsan Vlad cyg_vladioan Data 3 aprilie 2020 18:40:27
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <cstring>
using namespace std;
const int NMAX = 1000000;
char s[NMAX + 5] , urm[NMAX + 5];
int main()
{
    freopen("prefix.in" , "r" , stdin);
    freopen("prefix.out" , "w" , stdout);
    int t , n , i , j , k , lmax;
    scanf("%d\n" , &t);
    for(i = 1 ; i <= t ; i ++)
    {
        scanf("%s\n" , (s + 1));
        n = strlen(s + 1);
        urm[1] = k = lmax = 0;
        for(j = 2 ; j <= n ; j ++)
        {
            while(k > 0 && s[k + 1] != s[j])
                k = urm[k];
            if(s[k + 1] == s[j])
                k ++;
            urm[j] = k;
            if(s[k] == s[j] && k % (j - k) == 0)
                lmax = j;
        }
        printf("%d\n" , lmax);
    }
    return 0;
}