#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// Function to check if we can place m cameras with max distance S
bool canPlaceCameras(const vector<long long>& houses, int n, int m, long long S) {
int camerasUsed = 1; // Place the first camera at houses[0]
long long lastCameraPos = houses[0];
for (int i = 1; i < n; i++) {
if (houses[i] - lastCameraPos > S) {
camerasUsed++;
lastCameraPos = houses[i]; // Place a new camera
if (camerasUsed > m) return false;
}
}
return true;
}
int main() {
// Read input
int n, m;
cin >> n >> m;
vector<long long> houses(n);
for (int i = 0; i < n; i++) {
cin >> houses[i];
}
// Binary search for minimum S
long long left = 0, right = houses[n - 1] - houses[0], answer = right;
while (left <= right) {
long long mid = (left + right) / 2;
cout << mid << ' ';
if (canPlaceCameras(houses, n, m, mid)) {
answer = mid; // Try smaller S
right = mid - 1;
} else {
left = mid + 1;
}
}
cout << answer << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIHdlIGNhbiBwbGFjZSBtIGNhbWVyYXMgd2l0aCBtYXggZGlzdGFuY2UgUwpib29sIGNhblBsYWNlQ2FtZXJhcyhjb25zdCB2ZWN0b3I8bG9uZyBsb25nPiYgaG91c2VzLCBpbnQgbiwgaW50IG0sIGxvbmcgbG9uZyBTKSB7CiAgICBpbnQgY2FtZXJhc1VzZWQgPSAxOyAvLyBQbGFjZSB0aGUgZmlyc3QgY2FtZXJhIGF0IGhvdXNlc1swXQogICAgbG9uZyBsb25nIGxhc3RDYW1lcmFQb3MgPSBob3VzZXNbMF07CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspIHsKICAgICAgICBpZiAoaG91c2VzW2ldIC0gbGFzdENhbWVyYVBvcyA+IFMpIHsKICAgICAgICAgICAgY2FtZXJhc1VzZWQrKzsKICAgICAgICAgICAgbGFzdENhbWVyYVBvcyA9IGhvdXNlc1tpXTsgLy8gUGxhY2UgYSBuZXcgY2FtZXJhCiAgICAgICAgICAgIGlmIChjYW1lcmFzVXNlZCA+IG0pIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKaW50IG1haW4oKSB7CiAgICAvLyBSZWFkIGlucHV0CiAgICBpbnQgbiwgbTsKICAgIGNpbiA+PiBuID4+IG07CiAgICB2ZWN0b3I8bG9uZyBsb25nPiBob3VzZXMobik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGNpbiA+PiBob3VzZXNbaV07CiAgICB9CgogICAgLy8gQmluYXJ5IHNlYXJjaCBmb3IgbWluaW11bSBTCiAgICBsb25nIGxvbmcgbGVmdCA9IDAsIHJpZ2h0ID0gaG91c2VzW24gLSAxXSAtIGhvdXNlc1swXSwgYW5zd2VyID0gcmlnaHQ7CiAgICB3aGlsZSAobGVmdCA8PSByaWdodCkgewogICAgICAgIGxvbmcgbG9uZyBtaWQgPSAobGVmdCArIHJpZ2h0KSAvIDI7CiAgICAgICAgY291dCA8PCBtaWQgPDwgJyAnOwogICAgICAgIGlmIChjYW5QbGFjZUNhbWVyYXMoaG91c2VzLCBuLCBtLCBtaWQpKSB7CiAgICAgICAgICAgIGFuc3dlciA9IG1pZDsgIC8vIFRyeSBzbWFsbGVyIFMKICAgICAgICAgICAgcmlnaHQgPSBtaWQgLSAxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGFuc3dlciA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K