Cod sursa(job #197837)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 6 iulie 2008 16:55:53
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
# include <stdio.h>
# include <string.h>

using namespace std;

# define FIN "prefix.in"
# define FOUT "prefix.out"
# define MAXN 1000010

char s[MAXN];
int T,n,i,k,rez,j;
int pr[MAXN];

    int main()
    {
        freopen(FIN,"r",stdin);
        freopen(FOUT,"w",stdout);
        
        scanf("%d",&T);
        for (j = 1; j <= T; ++j)
          {
               scanf("%s",s+1);
               n=strlen(s+1);
               k=0;
               pr[1]=0;
               rez=0;
               for (i = 2; i <= n; ++i)
                 {
                      while (k>0 && s[k+1]!=s[i]) k=pr[k];
                      if (s[k+1]==s[i]) k++;
                      pr[i]=k;
                      if (k > 0 && i%(i-k)==0) rez=i;
                 }
               printf("%d\n",rez);
          }
          
        return 0;
    }