Cod sursa(job #2775190)

Utilizator euyoTukanul euyo Data 14 septembrie 2021 20:34:26
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>
#include <string>

using namespace std;

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

const int MAXL = (int)1e6 + 5;

int pi[MAXL];
string w;
	
inline void solve() {
  int q = 0, m = w.length(), res = 0;
  for ( int i = 2; i <= m; ++i ) {
    while ( q > 0 && w[q] != w[i - 1] ) {
      q = pi[q];
	}
	if ( w[q] == w[i - 1] ) {
	  ++q;
	}
    pi[i] = q;
	if ( i % (i - pi[i]) == 0 && pi[i] != 0 ) {
	  res = i;
	}
  }
  fout << res << "\n";
}

int main() {
  int t;
  fin >> t;
  while ( t-- ) {
    fin >> w;
    solve();
  }
  fin.close();
  fout.close();
  return 0;
}