Cod sursa(job #2081348)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 4 decembrie 2017 17:29:37
Problema Substr Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#include <algorithm>
#include <cstring>

const int MAX_N = 16384;

char s[MAX_N];
char *suff[MAX_N];

bool cmp(char *a, char *b) {
  return strcmp(a, b) < 0;
}

int main() {
  freopen("substr.in", "r", stdin);
  freopen("substr.out", "w", stdout);
  
  int N, K;
  scanf("%d%d%s", &N, &K, s);
  for (int i = 0; i < N; i++) {
    suff[i] = s + i;
  }
  std::sort(suff, suff + N, cmp);
  int ans = 0;
  for (int i = 0; i < N - K + 1; i++) {
    int k = 0;
    char *suff1, *suff2;
    suff1 = suff[i];
    suff2 = suff[i + K - 1];
    while (*suff1 && *suff2 && *suff1 == *suff2) {
      k++;
      suff1++;
      suff2++;
    }
    ans = std :: max (ans, k);
  }
  printf("%d\n", ans);
  return 0;
}