Cod sursa(job #1516941)

Utilizator zertixMaradin Octavian zertix Data 3 noiembrie 2015 18:52:14
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <cstdio>
#define milion 1000100
#include <cstring>
using namespace std;

int pref_max[10][milion],t;
char sir[milion];

void rezolv()
{
    scanf("%d",&t);
    for (int l=1; l<=t; ++l)
    {
        scanf("\n");
        scanf("%s",&sir);
        int maxl=0;
        int lun=strlen(sir);
        int i=0,j=1;
        while (j<lun)

            if (sir[i]!=sir[j])
                if (i==0)
                    ++j;
                else
                    i=pref_max[l][i-1];

            else if (sir[i]== sir[j])
            {
                pref_max[l][j]=i+1;
                ++i;
                ++j;
            }
        for(int m=lun-1; m>0; --m)
            if ( pref_max[l][m] && ((m+1)-pref_max[l][m]) && (m+1)%(m+1-pref_max[l][m])==0 && m+1>maxl)
                maxl=m+1;
        printf("%d\n",maxl);
    }

}

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