Cod sursa(job #283870)

Utilizator vladbBogolin Vlad vladb Data 20 martie 2009 11:22:59
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<string.h>

using namespace std;

ifstream fin("prefix.in");
ofstream fout("prefix.out");

int t,n,pi[1000001],m;
char a[1000001];

void prefix()
{    int i,k=0;
     for(i=2;i<=n;i++)
     {     while(k>0&&a[k+1]!=a[i]) k=pi[k];
           if(a[k+1]==a[i]) 
                            k++;
           pi[i]=k;
           if(k&&(i%(i-k)==0))
              if(i>m)
                m=i;
     }
}
                
int main()
{   fin>>t;
    for(int i=1;i<=t;i++)
    {       fin>>a;
            n=strlen(a); 
            for(int j=n;j>=0;j--) a[j]=a[j-1];
            m=0;
            prefix();
         //   for(int j=1;j<=n;j++)
        //            pi[i]=0;
            fout<<m<<"\n";
    }
    fin.close();
    fout.close();
    return 0;
}