Pagini recente » Cod sursa (job #2760914) | Cod sursa (job #2617128) | Cod sursa (job #3241246) | Cod sursa (job #835612) | Cod sursa (job #614064)
Cod sursa(job #614064)
#include <fstream>
#include <string.h>
#define max_n 1000002
using namespace std;
int i,n,l[max_n],per[max_n],t,k,rez,j;
char s[max_n];
ifstream in("prefix.in");
ofstream out("prefix.out");
int main () {
in >> t;
for (j=1; j<=t; ++j) {
in >> (s+1);
n=strlen(s+1);
memset(l,0,sizeof(l));
memset(per,0,sizeof(per));
k=0;
for (i=2; i<=n; i++)
{
while (k!=0 && s[k+1]!=s[i]) k=l[k];
if (s[k+1]==s[i]) k++;
l[i]=k;
if (i==2*k) {
per[i]=k;
rez=i;
}
else
if (i<=2*k && per[k]==i-k) {
rez=i;
per[i]=i-k;
}
}
out << rez << '\n';
}
return 0;
}