#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n,k,l[N];
bool check(int c){
int sum = 0;
for (int i = 1; i <= n; i++){
sum += l[i]/c;
}
if (sum >= k) return true;
return false;
}
int bisearch(int l, int r, int num[]){
int ans = 1;
while(l<=r){
int mid = l+r>>1;
if (check(mid)){
l = mid+1;
ans = mid;
}else{
r = mid-1;
}
}
return ans;
}
int main(){
scanf("%d %d",&n,&k);
for (int i = 1; i <= n; i++){
scanf("%d", &l[i]);
}
cout << bisearch(1,1e9,l);
return 0;
}
二分查找的简单方法
最新推荐文章于 2024-07-19 23:11:36 发布