Cod sursa(job #2483131)

Utilizator AlexNeaguAlexandru AlexNeagu Data 29 octombrie 2019 13:28:32
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;
int lps[1000005];
ifstream in("prefix.in");
ofstream out("prefix.out");
void compute_lps(string s) {
  memset(lps, 0, sizeof(lps));
  int len = 0, i = 1;
  while(i < s.size()) {
    if (s[i] == s[len]) {
      len++;
      lps[i] = len;
      i++;
    }
    else {
      if (len != 0) {
        len = lps[len - 1];
      }
      else {
        lps[i] = 0;
        i++;
      }
    }
  }

}
void solve() {
  string s;
  int mx = -2e9;
  in >> s;
  compute_lps(s);
  //for (int i = 0; i < s.size(); i++) cout << lps[i] << " ";
  //cout << "\n";
  for (int i = 1; i < s.size(); i++) {
    if (lps[i] && (i + 1) % (i + 1 - lps[i]) == 0) {
      mx = max(mx, (i + 1));
    }
  }
  mx != -2e9 ? out << mx << "\n" : out << "0\n";
  return;
}
int main() {
  int t;
  in >> t;
  while(t--) {
    solve();
  }
}