Pagini recente » Cod sursa (job #1055098) | Cod sursa (job #176467) | Cod sursa (job #405664) | Cod sursa (job #3134794) | Cod sursa (job #3298331)
#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;
}