Cod sursa(job #2056621)

Utilizator natrovanCeval Marius natrovan Data 4 noiembrie 2017 12:31:47
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <string.h>
using namespace std;
#define nmax 1000005
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int m,n,i,pi[nmax],k,nr,imax;
char a[nmax],b[nmax];
void prefix()
{
    int i,q=0;
    for(i=2,pi[1]=0;i<=m;++i)
    {
        while(q && a[q+1]!=a[i])q=pi[q];
        if(a[q+1]==a[i])++q;
        pi[i]=q;
        if(q && i%(i-q)==0) imax=i;
    }

}

int main()
{
    fin>>nr;
    for(k=1;k<=nr;++k)
    {
        fin>>a;
        imax=0;
        m=strlen(a);

        for(i=m; i; --i) a[i]=a[i-1]; a[0]=' ';

        prefix();
        fout<<imax<<'\n';
    }


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