Pagini recente » Cod sursa (job #3296872) | Profil la_lautari | Cod sursa (job #2709244)
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int build_kmp(char a[])
{
vector<int>t(1000001,0);
int ans=0;
for(int i=1;a[i]!=0;i++)
{
int k=t[i-1];
while(true){
if(a[k]==a[i])
{
t[i]=k+1;
break;
}
else if(k==0)
{
t[i]=0;
break;
}
else k=t[k-1];
}
int hossz=i-t[i]+1;
if (t[i] && !((i+1) %hossz)) {
ans = max(ans, i + 1);
}
}
return ans;
}
int main()
{
ifstream be("prefix.in");
ofstream ki("prefix.out");
int n;
be>>n;
for(int i=0;i<n;i++)
{
char a[1000001];
be>>a;
ki<<build_kmp(a)<<"\n";
}
return 0;
}