其他点都对的,这个点死活不过去
#include <bits/stdc++.h>
using namespace std;
int a[100001], n, c;
bool check (int m)
{
int k = 0;
for (int i = 1; i <= n; i++)
{
if (a[i] >= m)
{
k += a[i] / m;
}
if(k >= c) return 1;
}
return 0;
}
int main()
{
cin >> n >> c;
for (int i = 1; i <= n; i++)
cin >> a[i];
sort(a + 1, a + n + 1);
int l = 0, r = a[n];
int ans=-9999, mid;
while (l <= r) // 二分查找可能的距离
{
mid = (l + r) / 2;
if (check(mid) == 1) // 答案可以放,所以最大答案有可能在后面
{
ans = max (ans, mid);
l = mid + 1;
}
else
r = mid - 1;
}
if( ans >= 1 ) cout << ans << endl;
else cout << "0" << endl;
return 0;
}