M02774: 木材加工
http://cs101.openjudge.cn/practice/02774/
cpp
#include <stdio.h>
int len[10001];
bool check(int n, int m, int k){
int cnt = 0;
for (int i = 1; i <= n; i++){
cnt += len[i] / m;
}
return cnt >= k;
}
int main(){
int n, k, l = 1, r = 10000, ans = 0;
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; i++){
scanf("%d", &len[i]);
}
while (l <= r){
int mid = (l + r) >> 1;
if (check(n, mid, k)){
l = mid + 1;
ans = mid;
} else {
r = mid - 1;
}
}
printf("%d", ans);
return 0;
}