#include<bits/stdc++.h>
using namespace std;
int n,p;
const int N = 100010;
struct node
{
int a,b;
}c[N];
int check(double x)
{
double sum = p*x;
for(int i = 1;i<=n;i++)
{
if(c[i].a * x > c[i].b)
{
sum -= c[i].a * x - c[i].b;
}
if(sum < 0)return 0;
}
return 1;
}
int main()
{
cin>>n>>p;
for(int i = 1;i<=n;i++)scanf("%d %d",&c[i].a,&c[i].b);
double l = 0 ,r = 1e10;
while(l + 1e-6 < r)
{
double mid = (l + r) / 2;
if(check(mid)) l = mid;
else r = mid;
}
if(r >= 1e10)cout<<"-1"<<endl;
else cout<<l<<endl;
return 0;
}
在这里我的下界改为了-1就无法通过了是为啥,按道理我只是扩大了二分的区间,时间复杂度大一点而已,威为啥通过不了捏?