Cod sursa(job #2202343)

Utilizator rnqftwcalina florin daniel rnqftw Data 8 mai 2018 15:03:00
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <string.h>
#define Nmax 1000005

using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int T;
int pre[Nmax];

void prefix(char a[],int n)
{  int maxim = 0;
    int k = 0;

    for(int i = 2 ; i <= n ; ++i )
    {
        while(k > 0 && a[k+1] != a[i])
            k = pre[k];

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

            pre[i] = k;
    }

    for(int i = n; i >= 1 ; --i)
        if(pre[i] != 0 && i%(i-pre[i]) == 0){
           maxim = i;
           break;
        }

    fout << maxim << "\n";
}




int main()
{
   fin >> T;
   char a[Nmax];
   while(T--)
   {

       fin >> (a+1);

       int n = strlen(a+1);

       prefix(a,n);
   }
    return 0;
}