一个点WA,求解答!!!
查看原帖
一个点WA,求解答!!!
339978
大白菜ac楼主2020/8/8 11:31

有一个点答案是1.00,而我是0.99,相差0.01,不超过0.01,为啥不能过?

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;

int n, m;

bool check(double* x, double mid) {
	int count = 0;
	for (int i = 0; i < n; i++) {
		double t = x[i];
		while (t >= mid)
			t -= mid, count++;
		if (count >= m)
			return true;
	}
	return false;
}

int main() {
	cin >> n >> m;
	double* x = new double[n];
	double right = 0;
	for (int i = 0; i < n; i++)
		cin >> x[i], right = max(right, x[i]);
	double left = 0, mid, ans = 0;
	while (left <= right) {
		//cout << "left=" << left << ", right=" << right << endl;
		mid = (left + right) / 2;
		if (check(x, mid)) {
			ans = max(ans, mid);
			left = mid + 1e-10;
		}
		else
			right = mid - 1e-10;
	}
	//printf("%.2lf", ans);
	printf("%.2lf", floor(ans * 100) / 100);
	return 0;
}
2020/8/8 11:31
加载中...