#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct FenwickMax {
int n;
vector<int> bit;
FenwickMax(int n = 0) { init(n); }
void init(int n_) {
n = n_;
bit.assign(n + 1, 0);
}
void update(int idx, int val) {
for (; idx <= n; idx += idx & -idx)
bit[idx] = max(bit[idx], val);
}
int query(int idx) {
int res = 0;
for (; idx > 0; idx -= idx & -idx)
res = max(res, bit[idx]);
return res;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector<ll> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
auto check = [&](ll x) -> bool {
vector<ll> L(n), R(n);
for (int i = 0; i < n; i++) {
L[i] = a[i] - 1LL * i * x;
R[i] = a[i] + 1LL * i * x;
}
vector<ll> comp = R;
sort(comp.begin(), comp.end());
comp.erase(unique(comp.begin(), comp.end()), comp.end());
auto getPos = [&](ll v) {
return (int)(lower_bound(comp.begin(), comp.end(), v) - comp.begin()) + 1;
};
vector<int> ord(n);
iota(ord.begin(), ord.end(), 0);
sort(ord.begin(), ord.end(), [&](int i, int j) {
if (L[i] != L[j]) return L[i] > L[j];
if (R[i] != R[j]) return R[i] < R[j];
return i < j;
});
FenwickMax fw((int)comp.size());
int bestAll = 0;
for (int id : ord) {
int pos = getPos(R[id]);
int best = fw.query(pos);
int cur = best + 1;
fw.update(pos, cur);
bestAll = max(bestAll, cur);
}
return n - bestAll <= k;
};
ll lo = -1, hi = 2000000000LL;
while (hi - lo > 1) {
ll mid = (lo + hi) / 2;
if (check(mid)) hi = mid;
else lo = mid;
}
cout << hi << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKc3RydWN0IEZlbndpY2tNYXggewogICAgaW50IG47CiAgICB2ZWN0b3I8aW50PiBiaXQ7CgogICAgRmVud2lja01heChpbnQgbiA9IDApIHsgaW5pdChuKTsgfQoKICAgIHZvaWQgaW5pdChpbnQgbl8pIHsKICAgICAgICBuID0gbl87CiAgICAgICAgYml0LmFzc2lnbihuICsgMSwgMCk7CiAgICB9CgogICAgdm9pZCB1cGRhdGUoaW50IGlkeCwgaW50IHZhbCkgewogICAgICAgIGZvciAoOyBpZHggPD0gbjsgaWR4ICs9IGlkeCAmIC1pZHgpCiAgICAgICAgICAgIGJpdFtpZHhdID0gbWF4KGJpdFtpZHhdLCB2YWwpOwogICAgfQoKICAgIGludCBxdWVyeShpbnQgaWR4KSB7CiAgICAgICAgaW50IHJlcyA9IDA7CiAgICAgICAgZm9yICg7IGlkeCA+IDA7IGlkeCAtPSBpZHggJiAtaWR4KQogICAgICAgICAgICByZXMgPSBtYXgocmVzLCBiaXRbaWR4XSk7CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgbiwgazsKICAgIGNpbiA+PiBuID4+IGs7CiAgICB2ZWN0b3I8bGw+IGEobik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgY2luID4+IGFbaV07CgogICAgYXV0byBjaGVjayA9IFsmXShsbCB4KSAtPiBib29sIHsKICAgICAgICB2ZWN0b3I8bGw+IEwobiksIFIobik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgTFtpXSA9IGFbaV0gLSAxTEwgKiBpICogeDsKICAgICAgICAgICAgUltpXSA9IGFbaV0gKyAxTEwgKiBpICogeDsKICAgICAgICB9CgogICAgICAgIHZlY3RvcjxsbD4gY29tcCA9IFI7CiAgICAgICAgc29ydChjb21wLmJlZ2luKCksIGNvbXAuZW5kKCkpOwogICAgICAgIGNvbXAuZXJhc2UodW5pcXVlKGNvbXAuYmVnaW4oKSwgY29tcC5lbmQoKSksIGNvbXAuZW5kKCkpOwoKICAgICAgICBhdXRvIGdldFBvcyA9IFsmXShsbCB2KSB7CiAgICAgICAgICAgIHJldHVybiAoaW50KShsb3dlcl9ib3VuZChjb21wLmJlZ2luKCksIGNvbXAuZW5kKCksIHYpIC0gY29tcC5iZWdpbigpKSArIDE7CiAgICAgICAgfTsKCiAgICAgICAgdmVjdG9yPGludD4gb3JkKG4pOwogICAgICAgIGlvdGEob3JkLmJlZ2luKCksIG9yZC5lbmQoKSwgMCk7CiAgICAgICAgc29ydChvcmQuYmVnaW4oKSwgb3JkLmVuZCgpLCBbJl0oaW50IGksIGludCBqKSB7CiAgICAgICAgICAgIGlmIChMW2ldICE9IExbal0pIHJldHVybiBMW2ldID4gTFtqXTsKICAgICAgICAgICAgaWYgKFJbaV0gIT0gUltqXSkgcmV0dXJuIFJbaV0gPCBSW2pdOwogICAgICAgICAgICByZXR1cm4gaSA8IGo7CiAgICAgICAgfSk7CgogICAgICAgIEZlbndpY2tNYXggZncoKGludCljb21wLnNpemUoKSk7CiAgICAgICAgaW50IGJlc3RBbGwgPSAwOwoKICAgICAgICBmb3IgKGludCBpZCA6IG9yZCkgewogICAgICAgICAgICBpbnQgcG9zID0gZ2V0UG9zKFJbaWRdKTsKICAgICAgICAgICAgaW50IGJlc3QgPSBmdy5xdWVyeShwb3MpOwogICAgICAgICAgICBpbnQgY3VyID0gYmVzdCArIDE7CiAgICAgICAgICAgIGZ3LnVwZGF0ZShwb3MsIGN1cik7CiAgICAgICAgICAgIGJlc3RBbGwgPSBtYXgoYmVzdEFsbCwgY3VyKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuIC0gYmVzdEFsbCA8PSBrOwogICAgfTsKCiAgICBsbCBsbyA9IC0xLCBoaSA9IDIwMDAwMDAwMDBMTDsKICAgIHdoaWxlIChoaSAtIGxvID4gMSkgewogICAgICAgIGxsIG1pZCA9IChsbyArIGhpKSAvIDI7CiAgICAgICAgaWYgKGNoZWNrKG1pZCkpIGhpID0gbWlkOwogICAgICAgIGVsc2UgbG8gPSBtaWQ7CiAgICB9CgogICAgY291dCA8PCBoaSA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0K