Cod sursa(job #3298331)

Utilizator niculaandreiNicula Andrei Bogdan niculaandrei Data 28 mai 2025 20:26:02
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
#define LEN_MAX (int)1e6 + 5

using namespace std;

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

int T;
string S;

int pi[LEN_MAX], idx;
int len, Ans;

int main() {
    fin >> T;
    while (T--) {
        fin >> S;
        pi[0] = 0;
        Ans = 0;
        for (int i = 1; i < S.size(); i++) {
            if (S[i] == S[pi[i - 1]]) {
                pi[i] = pi[i - 1] + 1;
            }
            else {
                idx = pi[i - 1];
                while (idx > 0 && S[i] != S[idx]) {
                    idx = pi[idx - 1];
                }
                if (S[i] == S[idx]) {
                    idx++;
                }
                pi[i] = idx;
            }
            len = i + 1 - pi[i];
            if (pi[i] > 0 && (i + 1) % len == 0) {
                Ans = max(Ans, i + 1);
            }
        }
        fout << Ans << "\n";
    }

    return 0;
}