Pagini recente » Cod sursa (job #594196) | Cod sursa (job #2269956) | Cod sursa (job #446250) | Cod sursa (job #879268) | Cod sursa (job #2504302)
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
ifstream in ("prefix.in");
ofstream out("prefix.out");
char s[1000010];
int lps[1000010], lenfin, len, t, dif;
int main()
{
in.getline(s, 1000001); t=atoi(s);
s[0]=' ';
for(int q=1; q<=t; q++)
{
in.getline(s+1, 1000001);
lps[1]=lenfin=len=0;
for(int i=2; i<strlen(s); i++)
{
len=lps[i-1];
while(s[len+1]!=s[i]&&len>0)
len=lps[len];
if(s[len+1]==s[i])
len++;
lps[i]=len; dif=i-len;
if(len!=0&&i%dif==0)
lenfin=i;
}
out<<lenfin<<"\n";
}
return 0;
}