Cod sursa(job #564236)

Utilizator Sm3USmeu Rares Sm3U Data 26 martie 2011 22:50:00
Problema Prefix Scor 100
Compilator cpp Status done
Runda gr_3 Marime 0.69 kb
#include <stdio.h>
#include <string.h>

using namespace std;

char a[1000100];
int b[1000100];

void citire()
{
    gets(a);
    int max=0;
    int nr=1;
    int n=strlen(a);
    int i=0;
    int j=-1;
    b[i]=j;
    while(i<n)
    {
        while(j>=0 && a[i]!=a[j])
            j=b[j];
        i++;
        j++;
        b[i]=j;
        if(j>max && i-j<=j)
            max=j,nr=i-j;

    }
    if((max/nr+1)*nr==1)
        printf("0\n");
    else
    printf("%d\n",(max/nr+1)*nr);
}

int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    int t;
    scanf("%d\n",&t);
    while(t)
        t--,citire();

    return 0;
}