Cod sursa(job #2637210)

Utilizator andreic06Andrei Calota andreic06 Data 21 iulie 2020 21:41:03
Problema Prefix Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>

using namespace std;
const int N = 1e6;
int lps[N]; char sir[N];

void prefix_kmp ( int n ) {
   lps[0] = 0;

   int i = 1, len = 0;

   while ( i < n ) {
      if ( sir[i] == sir[len] )
        len ++, lps[i] = len, i ++;
      else if ( len > 0 )
        len = lps[len-1];
      else
        i ++;
   }
}


ifstream fin ( "prefix.in" );
ofstream fout ( "prefix.out" );

int main()
{
   int t;
   fin >> t, fin.get ();

   while ( t -- ) {
      char ch = fin.get ();
      int n = 0;
      while ( ch != '\n' ) {
         sir[n++] = ch;
         ch = fin.get ();
      }

      prefix_kmp ( n );
      int maxx = 0;
      for ( int i = 0; i < n; i ++ )
         if ( lps[i] > 0 && lps[i] % ( i - lps[i] + 1 ) == 0 )
           maxx = i;
      fout << maxx << '\n';

   }
    return 0;
}