75分求助,有wa也有tle
查看原帖
75分求助,有wa也有tle
754444
tamamocross楼主2023/7/21 09:28
#include<iostream>
#include<cmath>
#include<iomanip>
const int Max=100001;
using namespace std;
double a[Max],b[Max];
int n,p;
double b_search(double l,double r){
	double tot;
	while(1){	
		double mid=(l+r)/2;
		tot=mid*p;
		for(int i=1;i<=n;i++){
			if(mid*a[i]>b[i]){
				tot-=(mid*a[i]-b[i]);
			}
		}
		//cout<<l<<" "<<r<<endl;
		if(tot>1e-6){
			l=mid;
		}else if(tot<-1e-6){
			r=mid;
		}else{
			break;
		}
	}
	return (l+r)/2;
}
int main(){
	double l=0,r=1e10;
	cin>>n>>p;
	int sum=0;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i];
		sum+=a[i];
	}
	if(p>=sum){
		cout<<-1;
		return 0;
	}
	cout<<setprecision(9)<<b_search(l,r);
}
2023/7/21 09:28
加载中...