Pagini recente » Cod sursa (job #3123489) | Cod sursa (job #2587829) | Cod sursa (job #1186382) | Cod sursa (job #1131507) | Cod sursa (job #2322271)
#include <bits/stdc++.h>
int v[10000001];
char ch[1000000];
int main()
{
int n,k,i,j,q,mx,co;
char c;
FILE*fi,*fo;
fi=fopen("prefix.in","r");
fo=fopen("prefix.out","w");
fscanf(fi,"%d",&n);
for(i=0; i<n; i++)
{
c=fgetc(fi);
k=0;
j=1;
ch[j]=c;
j++;
c=fgetc(fi);
mx=0;
while(c!='\n' && c!=EOF)
{
ch[j]=c;
while(k>0 && c!=ch[k+1])
{
k=v[k];
}
if(c==ch[k+1])
k++;
v[j]=k;
if(v[j]>0 && j%(j-v[j])==0)
mx=j;
j++;
c=fgetc(fi);
}
fprintf(fo,"%d\n",mx);
}
fclose(fi);
fclose(fo);
return 0;
}