木棒切割问题 [二分]

在这里插入图片描述

#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
	int n, k;
	cin >> n; int a[1000];
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	cin >> k;
	sort(a, a + n);
	int left = 0; int right = a[n - 1], mid;
	while (left < right)
	{
		int count = 0;
		mid = (left + right) / 2;
		for (int i = 0; i < n; i++)
		{
			count += a[i] / mid;
		}
		if (count < k) //第一个比K小的条件成立
			right = mid;
		else
			left = mid + 1;
	}
	int count = 0;
	cout << right - 1 << endl;
}
posted @ 2020-07-11 08:58  _Hsiung  阅读(170)  评论(0编辑  收藏  举报