Pagini recente » Cod sursa (job #2373461) | Cod sursa (job #1652905) | Borderou de evaluare (job #20121) | Cei mai harnici utilizatori info-arena | Cod sursa (job #1429723)
#include <cstdio>
#include <cstring>
#define DIM 1048576
using namespace std;
FILE *fin = fopen("prefix.in", "r");
FILE *fout= fopen("prefix.out","w");
int N, P[DIM], T, maxim, i, L; char A[DIM], c;
int main(){
fscanf(fin, "%d", &T);
fscanf(fin, "%c", &c);
for(; T; T--){
fgets(A + 1, DIM, fin);
N = strlen(A + 1);
maxim = 0; L = 0;
for(i = 2; i <= N; i ++){
while(L != 0 && A[i] != A[L+1])
L = P[L];
if(A[i] == A[L+1])
L ++;
P[i] = L;
} i --;
while(i > 0 && !(P[i] > 0 && i % (i-P[i]) == 0))
i --;
fprintf(fout, "%d\n", i);
}
return 0;
}