Cod sursa(job #476512)

Utilizator freak93Adrian Budau freak93 Data 11 august 2010 12:52:01
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<cstdio>
#include<cstring>

using namespace std;

const char iname[]="prefix.in";
const char oname[]="prefix.out";
const int maxn=1000005;

char s[maxn];

int pi[maxn],t,i,rez,k;

int main()
{
    freopen(iname,"r",stdin);
    freopen(oname,"w",stdout);
    scanf("%d\n",&t);
    while(t--)
    {
        fgets(s+1,sizeof(s),stdin);
        k=0;rez=0;
        for(i=2;s[i]&&s[i]!='\n';++i)
        {
            while(k&&s[k+1]!=s[i])
                k=pi[k];
            if(s[k+1]==s[i])
                ++k;
            pi[i]=k;
            if(k&&i%(i-k)==0)
                rez=i;
        }
        printf("%d\n",rez);
    }
}