Cod sursa(job #2717264)
Utilizator | Data | 6 martie 2021 21:31:49 | |
---|---|---|---|
Problema | Prefix | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
char A[2000001];
int pi[2000001];
int main(){
int T;
f >> T;
while(T--){
f >> (A + 1);
int N = strlen(A + 1), q = 0, mx = 0;
pi[1] = 0;
for(int i = 2;i <= N;i++){
while(q && A[q + 1] != A[i])
q = pi[q];
if(A[q + 1] == A[i])
q++;
pi[i] = q;
if(q && i % (i - q) == 0)
mx = max(mx, i);
}
g << mx << "\n";
}
}