Pagini recente » Cod sursa (job #1472855) | Cod sursa (job #2901515) | Cod sursa (job #886493) | Cod sursa (job #1956729) | Cod sursa (job #974486)
Cod sursa(job #974486)
#include<fstream>
#include<cstring>
#define dim 1000009
using namespace std;
int nr,n,k,a[dim],ok,x;
char v[dim];
void pref()
{
int k=0;
a[1]=0;
for(int i=2;i<=x;++i)
{
while(k>0&&v[k+1]!=v[i])
k=a[k];
if(v[k+1]==v[i])
k++;
a[i]=k;
}
}
int main()
{
ifstream f("prefix.in");
ofstream g("prefix.out");
f>>n;
int i;
while(n--)
{
f>>(v+1);
x=strlen(v+1);
pref();
ok=0;
for(int i=x;i&&!ok;i--)
{
if(i-a[i]==a[i]||i-a[i]==a[i]-a[a[i]]&&v[a[i]])
{
g<<i<<"\n";
ok=1;
}
}
if (!ok)
g<<"0\n";
}
}