#include <iostream>
#include <cstdio>
using namespace std;
long long n, k;
long long a[1000005];
bool f(long long x) {
long long ans = 0;
for (int i = 1; i <= n; i++) {
ans += a[i] / x;
}
return ans >= k;
}
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i];
long long l = 0, r = 100000001;
long long mid, ans = 0;
while (l <= r) {
mid = (l + r) >> 1;
if (f(mid)) ans = mid, l = mid + 1;
else r = mid - 1;
}
cout << ans << endl;
return 0;
}
感觉是二分写法有问题,具体是那里呢?