Pagini recente » Cod sursa (job #2168242) | Cod sursa (job #2163051) | Cod sursa (job #618741) | Cod sursa (job #2298479) | Cod sursa (job #629247)
Cod sursa(job #629247)
#include <fstream>
#include <cstdlib>
#define NMax 1000003
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int T,i,pre[NMax];
char S[NMax];
long j,M;
int main()
{
f>>T;
for(i=1;i<=T;i++)
{
f>>S;
M=strlen(S);
for(j=M;j>0;j--)
S[j]=S[j-1];
long k=0,nr=0,pr;
pre[1]=0;
for(j=2;j<=M;j++)
{
while(k && S[k+1]!=S[j])
k=pre[k];
if(S[k+1]==S[j])
++k;
pre[j]=k;
pr=j-pre[j];
if(j%2==0 && pre[j]==j/2 || j%pr==0 && pre[j-pr]==pre[j]-pr)
nr=j;
}
g<<nr<<'\n';
}
f.close();
g.close();
return 0;
}