Cod sursa(job #2288936)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 24 noiembrie 2018 09:44:34
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f ("prefix.in");
ofstream g ("prefix.out");
char s[1000010]  ;
int p[1000010] , T , M , k;
int main()
{
    f >> T;

    for (int i = 1 ; i <= T ; i++)
    {
        f >> s + 1 ;
        M = strlen(s+1);
        k = 0 ;
        for (int j = 2 ; j <= M ; j ++)
        {
            while (k != 0 && s[k+1] != s[j]) k = p[k];
            if (s[k+1] == s[j]) k ++ ;
            p[j] = k ;
        }

        for (int j = M ; j >= 1 ; j --)
        {
            if (p[j] != 0 && j%(j-p[j]) == 0)
            {

                g << j  << '\n';
                break;
            }
            if (j == 1) g << '0' << '\n';
        }
    }

}