Cod sursa(job #1429715)
| Utilizator | Data | 6 mai 2015 23:10:25 | |
|---|---|---|---|
| Problema | Prefix | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.63 kb |
#include <fstream>
#include <cstring>
#define DIM 1048576
using namespace std;
ifstream fin ("prefix.in" );
ofstream fout("prefix.out");
int N, P[DIM], T, maxim, i, L; char A[DIM];
int main(){
fin >> T;
for(; T; T--){
fin >> A + 1;
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;
if(P[i] > 0 && i % (i - P[i]) == 0)
maxim = i;
} fout << maxim << "\n";
}
return 0;
}
