40pt?
查看原帖
40pt?
317400
Foggy_night楼主2023/5/22 21:53
#include<cstdio>
#include<iostream>
using namespace std;	
int n, p;
double sum;
int a[100005], b[100005];
bool check(double x){//判断是否是答案 
	double q = p * x;
	sum = 0;
	for(int i = 1; i <= n; i++){
		if(a[i] * x <= b[i])
			continue;
		sum += (a[i] * x - b[i]);
	} 
	return sum <= q;
}
int main(){
	scanf("%d%d", &n, &p);
	for(int i = 1; i <= n; i++)	{
		scanf("%d%d", &a[i], &b[i]);
		sum += a[i];
	}
	double l = 1, r = 1e10;
	if(sum <= p){
		printf("-1");
		return 0;
	}
	while(r - l > 1e-6)
	{
		double mid = (l+r) / 2;
		if(check(mid))
			l = mid;
		else r = mid;
	}
	printf("%.9lf", l);
	return 0;
}
2023/5/22 21:53
加载中...