#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool checkPossible(const vector<int>& sticks, int k, int length) {
int count = 0;
for (int stick : sticks) {
count += stick / length;
}
return count >= k;
}
int longestPossibleLength(const vector<int>& sticks, int k) {
int left = 1; // Minimum possible length
int right = *max_element(sticks.begin(), sticks.end()); // Maximum possible length
while (left < right) {
int mid = left + (right - left + 1) / 2;
if (checkPossible(sticks, k, mid)) {
left = mid;
} else {
right = mid - 1;
}
}
return left;
}
int main() {
int n, k;
cin >> n >> k;
vector<int> sticks(n);
for (int i = 0; i < n; ++i) {
cin >> sticks[i];
}
int result = longestPossibleLength(sticks, k);
cout << result << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgY2hlY2tQb3NzaWJsZShjb25zdCB2ZWN0b3I8aW50PiYgc3RpY2tzLCBpbnQgaywgaW50IGxlbmd0aCkgewogICAgaW50IGNvdW50ID0gMDsKICAgIGZvciAoaW50IHN0aWNrIDogc3RpY2tzKSB7CiAgICAgICAgY291bnQgKz0gc3RpY2sgLyBsZW5ndGg7CiAgICB9CiAgICByZXR1cm4gY291bnQgPj0gazsKfQoKaW50IGxvbmdlc3RQb3NzaWJsZUxlbmd0aChjb25zdCB2ZWN0b3I8aW50PiYgc3RpY2tzLCBpbnQgaykgewogICAgaW50IGxlZnQgPSAxOyAvLyBNaW5pbXVtIHBvc3NpYmxlIGxlbmd0aAogICAgaW50IHJpZ2h0ID0gKm1heF9lbGVtZW50KHN0aWNrcy5iZWdpbigpLCBzdGlja3MuZW5kKCkpOyAvLyBNYXhpbXVtIHBvc3NpYmxlIGxlbmd0aAogICAgCiAgICB3aGlsZSAobGVmdCA8IHJpZ2h0KSB7CiAgICAgICAgaW50IG1pZCA9IGxlZnQgKyAocmlnaHQgLSBsZWZ0ICsgMSkgLyAyOwogICAgICAgIGlmIChjaGVja1Bvc3NpYmxlKHN0aWNrcywgaywgbWlkKSkgewogICAgICAgICAgICBsZWZ0ID0gbWlkOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJpZ2h0ID0gbWlkIC0gMTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBsZWZ0Owp9CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBrOwogICAgY2luID4+IG4gPj4gazsKICAgIAogICAgdmVjdG9yPGludD4gc3RpY2tzKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBjaW4gPj4gc3RpY2tzW2ldOwogICAgfQogICAgCiAgICBpbnQgcmVzdWx0ID0gbG9uZ2VzdFBvc3NpYmxlTGVuZ3RoKHN0aWNrcywgayk7CiAgICBjb3V0IDw8IHJlc3VsdCA8PCBlbmRsOwogICAgCiAgICByZXR1cm4gMDsKfQo=