#17 T了
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int N=100086;
int n;
double p,l,r,a[N],b[N];
inline int read()
{
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-f;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
bool check(double k)
{//k是时间数
double ans=p*1.0*k;//算出总的充电量
for(int i=1;i<=n;i++)
{
if(b[i]<a[i]*k)
{//如果自身供电不足
ans=ans-(a[i]*k-b[i]);
}
}
if(ans>=0)
return true;
return false;
}
int main()
{
r=0x7f7f7f7f7f7f7f7f;
n=read(),p=read();
for(int i=1;i<=n;i++)
{
int A=read(),B=read();
a[i]=A*1.0,b[i]=B*1.0;
}
while(l+1e-6<r)
{
double mid=(l+r)/2;
if(check(mid))
{
l=mid;
}
else
{
r=mid;
}
}
if(r==0x7f7f7f7f7f7f7f7f)
printf("-1");
else
printf("%.10lf",r);
return 0;
}