Pagini recente » Cod sursa (job #2300913) | Cod sursa (job #2215000) | Istoria paginii runda/brasov_13_jr/clasament | Cod sursa (job #1561750) | Cod sursa (job #1051776)
#include <fstream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
ifstream cin("prefix.in");
ofstream cout("prefix.out");
ios :: sync_with_stdio(false);
int T;
for (cin >> T, cin.get();T;T--) {
string str;
getline(cin,str);
vector<int> a(str.size(),0);
int ans = 0;
for (int i = 1, k = 0;i < int(str.size());i++) {
while (k > 0 && str[i] != str[k]) k = a[k - 1];
k += (str[i] == str[k]);
a[i] = k;
int periodLength = i + 1 - a[i];
if (periodLength != i + 1 && (i + 1 ) % periodLength == 0) {
ans = max(ans, i + 1);
}
}
cout << ans << "\n";
}
return 0;
}