Cod sursa(job #3293237)
| Utilizator | Data | 10 aprilie 2025 20:49:18 | |
|---|---|---|---|
| Problema | Prefix | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int t, pref[1000005];
string s;
void prefix() {
int j;
for(int i=1; i<s.size(); i++) {
j=pref[i-1];
while(s[i]!=s[j] && j>0) {
j=pref[j-1];
}
if(s[i]==s[j]) {
j++;
}
pref[i]=j;
}
}
int main()
{
fin >> t;
while(t--) {
int maxi=0;
fin >> s;
prefix();
for(int i=0; i<s.size(); i++) {
if((i+1)%(i-pref[i]+1)==0 && pref[i]!=0) {
maxi=max(i+1, maxi);
}
}
fout << maxi << "\n";
}
return 0;
}
