#include <iostream>
#include<cstdio>
#include <algorithm>
using namespace std;
double p, sum = 0, w, L = 0, R = 1e10, mid;
int n;
double a[2][200010];//就这里
bool f(double x) {
w = 0;
for (int i = 1; i <= n; i++)
if (x*a[1][i] > a[2][i])
w+=(x * a[1][i] - a[2][i]);
return w <= p * x;
}
int main() {
cin >> n >> p;
for (int i = 1; i <= n; i++) {
cin >> a[1][i] >> a[2][i];
sum += a[1][i];
}
if (sum <= p) {
cout << -1.000000;
return 0;
}
while (R - L > 1e-6) {
mid = (R + L) / 2;
if (f(mid))
L = mid;
else
R = mid;
}
printf("%.6lf ", L);
return 0;
}
如果把双重数组改成a,b两个数组就能过,否则就只有40分,其他都re,请问这是为啥啊?