Pagini recente » Borderou de evaluare (job #2007276) | Cod sursa (job #355701) | Borderou de evaluare (job #1034735) | Cod sursa (job #986189) | Cod sursa (job #799958)
Cod sursa(job #799958)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
int t[1111111];
char s[1111111];
inline bool perioada(int n)
{
int k=n-t[n];
if(n%k==0 && n/k!=1)
return true;
return false;
}
void solve()
{
int i,p=0,maxim=0;
in.getline(s,1111111);
t[0]=-1;
t[1]=0;
for(i=1;s[i];++i)
{
if(s[i]==s[t[i]])
t[i+1]=t[i]+1;
else
{
if(s[i]==s[0])
t[i+1]=1;
else
t[i+1]=0;
}
if(perioada(i+1))
maxim=i+1;
}
out<<maxim<<"\n";
}
int main()
{
int t,i;
in>>t;
in.getline(s,10);
for(i=1;i<=t;++i)
solve();
return 0;
}