Pagini recente » Cod sursa (job #2843009) | Cod sursa (job #1683850) | Cod sursa (job #36050) | Cod sursa (job #1582450) | Cod sursa (job #2456221)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("prefix.in");
ofstream fo("prefix.out");
const int NMAX = 1e6 + 5;
int t, n;
char A[NMAX];
int lsp[NMAX];
void getLsp()
{
lsp[0] = lsp[1] = 0;
for (int i = 2; i <= n; i++)
{
int l = lsp[i - 1];
while (l > 0 && A[i] != A[l + 1])
l = lsp[l];
if (A[i] == A[l + 1])
l++;
lsp[i] = l;
}
}
int main()
{
fi >> t;
while (t--)
{
fi >> A + 1;
n = strlen(A + 1);
getLsp();
int rez = 0;
for (int i = n; i >= 1; i--)
{
if (lsp[i] && A[i] == A[i - lsp[i]])
{
rez = i;
break;
}
}
fo << rez << "\n";
}
return 0;
}