Cod sursa(job #2647548)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 5 septembrie 2020 11:36:04
Problema Prefix Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <stdio.h>
#include <string.h>

#define NMAX 1000003

using namespace std;

int n,i,k,last,hmax,nr;
int urm[NMAX];

char v[NMAX];

int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);

    scanf("%d",&n);

    while(n--){
        scanf("%s",v);
        k=-1;
        hmax=-1;
        urm[0]=-1;
        for(i=1;i<strlen(v);i++){

            while(k>-1 && v[k+1]!=v[i])
                k=urm[k];

            if(v[k+1]==v[i])
                k++;

            urm[i]=k;
            if(urm[i]>=0 && (i+1)%(i-urm[i])==0)
                hmax=i;



        }

       /*for(i=0;i<strlen(v);i++)
            printf("%d ",urm[i]);
        printf("\n");*/

        printf("%d\n",hmax+1);


    }

    return 0;
}