Pagini recente » Cod sursa (job #1944884) | Cod sursa (job #1173991) | Cod sursa (job #538990) | Cod sursa (job #2175863) | Cod sursa (job #3225557)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <cstring>
#define NMAX 1000000
#define LOG 21
#define INF (int)(10e8)
#define MOD 1000000007
#define ll long long int
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int pi[NMAX+1];
int z[NMAX+1];
void computeZ(string s)
{
z[0]=0;
int l=0,r=0;
int n = s.size();
for(int i=1;i<n;i++)
{
if(i < r)
{
z[i] = min(r-i,z[i-l]);
}
while(i+z[i] < n && s[i+z[i]]==s[z[i]])
{
++z[i];
}
if(z[i]+i > r)
{
l=i;
r=z[i]+i;
}
}
}
void solve()
{
string s;
fin >> s;
memset(z,0,sizeof(z));
computeZ(s);
int res=0;
for(int i=1;i<s.size();i++)
{
if(z[i]>=i)
{
res=max(res,i+z[i]-z[i]%i);
}
}
fout << res << "\n";
}
int main()
{
int t;
fin >> t;
while(t--)
{
solve();
}
}