Cod sursa(job #1625037)

Utilizator alexpascadiAlexandru Pascadi alexpascadi Data 2 martie 2016 16:08:24
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <stdio.h>

using namespace std;

const int N = 1000001;
char v[N];
int pred[N];

int main()
{
    FILE *in=fopen("prefix.in","r");
    FILE *out=fopen("prefix.out","w");

    int t,i,j,k,rez;
    fscanf(in,"%d\n",&t);
    for(i=0;i<t;i++)
    {
        fgets(v+1,N,in);
        pred[1]=0; k=0;
        rez=0;
        for(j=2;v[j];j++)
        {
            while(k>0 && v[j]!=v[k+1])
                k=pred[k];
            if(v[j]==v[k+1])
                k++;
            pred[j]=k;
            if(pred[j]!=0 && j%(j-pred[j])==0)
                rez=j;
        }
        fprintf(out,"%d\n",rez);
    }
    return 0;
}