Cod sursa(job #2460398)

Utilizator minecraft3Vintila Valentin Ioan minecraft3 Data 23 septembrie 2019 17:19:50
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <bits/stdc++.h>
using namespace std;

int t, kmp[1000005], n, i, j;
string s;

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

    fin >> t; do {
        fin >> s; n = s.size();
        for(i = 1, j = 0; i < n; ++i) {
            if(s[i] == s[j]) kmp[i] = ++j;
            else kmp[i] = j = (s[i] == s[0]);
        } for(i = n-1, j = 0; i > 0; --i) {
            if(kmp[i] && (i+1) % (i+1-kmp[i]) == 0) {
                j = i+1; break;
            }
        } (fout << j).put('\n');
    } while(--t);
}