Cod sursa(job #480891)

Utilizator APOCALYPTODragos APOCALYPTO Data 29 august 2010 23:17:40
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<cstring>
char a[1000003];
int N,T;
ofstream fout("prefix.out");
void solve()
{ cout<<1;
    int i,k;
cout<<1;
int pi[1000003];
    int max=0;
    pi[1]=0;
    k=0;

    for(i=2;i<=N;i++)
    { // cout<<i;
        while(k>0&&a[k+1]!=a[i])
           k=pi[k];
        if(a[k+1]==a[i]) k++;
        pi[i]=k;
        if(pi[i]!=0&&i%(i-pi[i])==0) max=i;

    }
    fout<<max<<"\n";

}

void cit()
{

    ifstream fin("prefix.in");
    fin>>T;
    fin.get();
     for(int i=1;i<=T;i++)
     {
         fin.getline(a+1,1000001);
         N=strlen(a+1);
         //cout<<N;
       //  cout<<1;
         solve();

     }

}

int main()
{

    cit();
    fout.close();
    return 0;
}