Pagini recente » Cod sursa (job #2839851) | Cod sursa (job #959042) | Cod sursa (job #2286531) | Cod sursa (job #2775135) | Cod sursa (job #1385859)
#include <stdio.h>
#define MAXN 1000000
int n, pi[MAXN+1];
char s[MAXN+1];
inline int maxpf(){
int i, r;
pi[0]=0;
r=0;
for(i=1; s[i]!='\n'; i++){
while((r>0)&&(s[i]!=s[r])){
r=pi[r-1];
}
if(s[i]==s[r]){
r++;
}
pi[i]=r;
}
while((i>0)&&((pi[i-1]==0)||(i%(i-pi[i-1])!=0))){
i--;
}
return i;
}
int main(){
int T, t, a;
char ch; //fgetc nu intra in timp; echipa infoarena sa modifice timpul de evaluare!!!
FILE *fin, *fout;
fin=fopen("prefix.in", "r");
fout=fopen("prefix.out", "w");
fscanf(fin, "%d ", &T);
for(t=0; t<T; t++){
n=0;
fgets(s, MAXN+1, fin);
a=maxpf();
fprintf(fout, "%d\n", a);
}
fclose(fin);
fclose(fout);
return 0;
}