#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2002;
int n, k;
long long a[MAXN];
int dp[MAXN];
int abs1(int a) { return a >= 0 ? a : -a; }
int min1(int a, int b) { return a > b ? b : a; }
bool find(long long mid) {
  for (int i = 1; i <= n + 1; i++) dp[i] = i - 1;
  dp[1] = 0;
  for (int i = 2; i <= n; i++)
    for (int j = 1; j < i; j++)
      if (abs1(a[i] - a[j]) <= (i - j) * mid)
        dp[i] = min1(dp[i], dp[j] + (i - j - 1));
  for (int i = 1; i <= n; i++) dp[n + 1] = min1(dp[n + 1], n - i + dp[i]);
  if (dp[n + 1] <= k) return true;
  return false;
}
int main() {
  int i;
  long long mid, L, R;
  scanf("%d %d", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
  L = 0;
  R = 2000000001;
  while (L <= R) {
    mid = (L + R) >> 1;
    if (find(mid))
      R = mid - 1;
    else
      L = mid + 1;
  }
  printf("%lld\n", R + 1);
  return 0;
}
