Cod sursa(job #3257975)

Utilizator monica_LMonica monica_L Data 20 noiembrie 2024 13:56:29
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("prefix.in");
ofstream fout("prefix.out");
int t, urm[1000006];
string s;

int kmp()
{
    int k = 0, m = s.length(), res = 0;

    for (int i=2; i<=m; i++)
    {
        while(k > 0 && s[k] != s[i - 1]) k = urm[k];
        if (s[k] == s[i - 1]) k ++;
        urm[i] = k;
        if (i % (i - urm[i]) == 0 && urm[i] != 0) res = i;
    }
    return res;
}

int main()
{
    fin >> t;
    while(t--)
    {
        fin >> s;
        fout << kmp() << '\n';;
    }
    return 0;
}