Cod sursa(job #2924009)

Utilizator raresgherasaRares Gherasa raresgherasa Data 22 septembrie 2022 21:11:37
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

const string fisier = "prefix";

ifstream fin (fisier + ".in");
ofstream fout (fisier + ".out");

int solve(){
  string s; fin >> s;
  int n = (int)s.size(), index = 0;
  vector<int>a(n, 0);
  for (int i = 1; i < n;){
    if (s[i] == s[index]){
      index += 1;
      a[i] = index;
      i += 1;
    }
    else{
      if (index != 0){
        index = a[index - 1];
      }
      else{
        a[i] = 0;
        i += 1;
      }
    }
  }
  int ans = 0;
  for (int i = 1; i <= n; i++){
    if (a[i - 1] && i % (i - a[i - 1]) == 0){
      ans = max(ans, i);
    }
  }
  return ans;
}

int main(){
  int t; fin >> t;
  while (t--){
    fout << solve() << '\n';
  }
}