Cod sursa(job #3132514)

Utilizator YorKnEzAlex Mitreanu YorKnEz Data 22 mai 2023 22:03:12
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

#define ll long long
#define ull unsigned long long

using namespace std;

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

  ios_base::sync_with_stdio(false);
  cin.tie(NULL);

  int t;
  cin >> t;

  while (t--) {
    string s;
    cin >> s;

    int m = s.size(), i = 1, max = 0;
    int f[m + 1];
    f[0] = -1;

    // cout << -1 << " ";

    for (; i <= m; i++) {
      int k = f[i - 1];

      while (k != -1 && s[i - 1] != s[k]) {
        k = f[k];
      }

      f[i] = k + 1;

      // cout << f[i] << " ";

      int period = i - f[i];
      if (period <= f[i]) {
        int len = (i / period) * period;
        if (len > max) {
          max = len;
        }
      }
    }

    // cout << endl;
    cout << max << endl;
  }

  return 0;
}