最后一个点 WA

#include <cmath>
#include <cstdio>

int n, k;
double l = 0, r = 0x3f3f3f3f, *a;
bool check(double mid);

int main(void)
{
	scanf("%d %d", &n, &k);
	a = new double[n];
	
	for (int i = 0; i < n; i++)
	{
		scanf("%lf", &a[i]);
	}
	
	while (l + 10e-8 < r)
	{	
		double mid = (l + r) / 2.0;
		
		if (check(mid))
		{
			l = mid;
		}
		else
		{
			r = mid - 10e-9;
		}
	}
	
	printf("%.2lf", floor(l * 10e11) / 10e11);
	return 0;
}

bool check(double mid)
{
	int ans = 0;
	
	for (int i = 0; i < n; i++)
	{
		ans += int(a[i] / mid);
	}
	
	return ans >= k;
}

3 个赞

用float试一下

3 个赞