Cod sursa(job #2637291)

Utilizator andreic06Andrei Calota andreic06 Data 22 iulie 2020 12:43:32
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <iostream>
#include <fstream>

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

int maxx;
void prefix_kmp ( int n ) {
   lps[0] = 0, maxx = -1;

   int len = 0;

   for ( int i = 1; i < n; i ++ ) {
      while ( len > 0 && sir[len] != sir[i] )
         len = lps[len-1];
      if ( sir[i] == sir[len] )
        len ++;
      lps[i] = len;
      if ( lps[i] && ( i + 1 ) % ( i + 1 - lps[i] ) == 0 )
        maxx = i;
   }
}


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

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

   while ( t -- ) {
      fin >> sir;
      int n = sir.size ();
      prefix_kmp ( n );
      fout << maxx + 1 << '\n';

   }
    return 0;
}