求助
查看原帖
求助
696748
youakioi楼主2023/9/24 13:52
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const double eps=0.00000000001;
int n,p;
double sum1,sum2; 
double a[100005],b[100005];
bool check(double x){
	double now=p*x;
	sum2=0;
	for(int i=1;i<=n;i++){
		if(a[i]*x<=b[i]) continue;
		sum2+=(a[i]*x-b[i]);
	}
	return sum2<=now;
} 
int main(){
	cin>>n>>p;
	for(int i=1;i<=n;i++) cin>>a[i]>>b[i],sum1+=a[i];
	if(sum1<=p){
		cout<<-1<<endl;
		return 0;
	}
	double l=0,r=100005,ans=0;
	while(l<=r){
		double mid=(l+r)/2.0;
		if(check(mid)){
			l=mid+eps;
			ans=mid;
		}else r=mid-eps;
	}
	printf("%.11f",ans);
	return 0;
}

第 1919 个测试点过不了

2023/9/24 13:52
加载中...