#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, p;
struct node {
int a, b;
} d[N];
bool check(double x) {
double tot = x * p, sum = 0;
for (int i = 0; i < n; i++) {
if (d[i].b > x * d[i].a)
continue;
sum += d[i].a * x - d[i].b;
}
return sum <= tot;
}
int main() {
cin >> n >> p;
double sum = 0;
for (int i = 0; i < n; i++) {
cin >> d[i].a >> d[i].b;
sum += d[i].a;
}
double l = 0, r = 1e30, mid, ans = -1;
if (p > sum) {
cout << "-1" << endl;
return 0;
}
while (r - l > 1e-6) {
mid = (l + r) / 2;
if (check(mid)) {
ans = mid;
l = mid;
} else
r = mid;
}
printf("%.10f", ans);
return 0;
}