Skip to content

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;
}