Pagini recente » Cod sursa (job #986593) | Cod sursa (job #561846) | Cod sursa (job #615541) | Cod sursa (job #852218) | Cod sursa (job #1094809)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char s[1000001];
int pi[1000001],fr[1000001];
int n,maxv,k,t;
int main()
{
fin>>t;
for (;t; --t)
{
fin>>(s+1);
n = strlen(s+1);
pi[1] = 0;
fr[1] = 1;
k = 0;
maxv = 0;
for (int i=2; i<=n; ++i)
{
while (s[i]!=s[k+1] && k != 0)
k = pi[k];
if (s[i]==s[k+1])
pi[i] = ++k;
if (i-k == fr[k])
{
fr[i] = fr[k];
maxv = i;
}
else fr[i] = i;
}
fout<<maxv<<"\n";
}
}