#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
struct dip
{
double in;
double out;
};
int main()
{
double n, p;
scanf_s("%lf%lf", &n, &p);
dip arr[10002];
double maxx = 0, minn = 1000000000, mun = 0;
for (int x1 = 0; x1 < n; x1++)
{
scanf_s("%lf%lf", &arr[x1].in, &arr[x1].out);
maxx=max(maxx, arr[x1].out / arr[x1].in);
minn=min(minn, arr[x1].out / arr[x1].in);
mun += arr[x1].in;
}
if (mun <= p) { printf("-1"); return 0; }
double left = minn, right = maxx;
double best = 0;
while (right-left>1e-6)
{
double mid = (right + left) / 2;
double mh = 0;
for (int x2 = 0; x2 < n; x2++)
{
double h = arr[x2].out / arr[x2].in;
if (h<mid)
{
mh += (mid - h) * arr[x2].in;
}
}
if (mh - mid * p <=1e-6 )
{
best = mid;
left = mid + 1e-6;
}
else { right = mid - 1e-6; }
}
printf("%lf", best);
return 0;
}