#include <bits/stdc++.h>
using namespace std;
const long long N = 3e6 + 20, M = 998244353;
#define eps 5e-12
#define int long long
// #define int __int128
#define ll long long
#define all(x) x.begin(), x.end()
#define endl '\n'
#define ls (p << 1)
#define rs ((p << 1) | 1)
#define f1 first
#define pb push_back
#define f2 second
#define IOS std::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0), std::cout << std::fixed << std::setprecision(7);
int n;
double x[N], y[N], a[N], b[N];
int dp[N];
int read()
{
int x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9')
{
f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9')
{
x = x * 10 + ch - '0';
ch = getchar();
}
x *= f;
return x;
}
void write(int x)
{
if (x < 0)
{
putchar('-');
x = -x;
}
if (x > 9)
write(x / 10);
putchar(x % 10 + '0');
}
signed main()
{
eps*=5;
IOS;
int k;
cin >> n >> k;
for (int i = 1; i <= n; i++)
cin >> x[i] >> y[i];
double l , r = LLONG_MAX;
l=-r;
auto check = [&](double k1) -> bool
{
for (int i = 1; i <= n; i++)
dp[i] = 0, a[i] = y[i] - k1 * x[i];
int len = 0;
for (int i = 1; i <= n; i++)
{
if (a[i] > b[len])
{
b[++len] = a[i];
}
else
{
b[lower_bound(b + 1, b + len + 1, a[i]) - b] = a[i];
}
}
return len >= k;
};
//check(0.5);
while (l < r - eps)
{
double mid = (l + r) / 2;
if (check(mid))
l = mid + eps * 0.01;
else
r = mid - eps * 0.01;
}
cout << l << endl;
return false;
}