Cod sursa(job #2789341)

Utilizator IoanMihaiIoan Mihai IoanMihai Data 27 octombrie 2021 14:03:35
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
#define MAXL 1000006
string str;
int t, urmator[MAXL];
void kmp(){
    int k = 0, m = str.length(), res = 0;
    for (int i=2;i<=m;i++){
        while(k > 0 && str[k] != str[i - 1]){
            k = urmator[k];
        }

        if (str[k] == str[i - 1])
            k ++;

        urmator[i] = k;
        if (i % (i - urmator[i]) == 0 && urmator[i] != 0){
            res = i;
        }
    }

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