#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pb push_back
const int N=500+5,MAXN=1e5+5,MAXA=1e6+5,inf=1e9,MOD=998244353;
int mn[N][N];
long double dp[N][N];
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n,k,e=0; cin>>n>>k;
pair<int,int> p[n];
for(int i=0;i<n;i++){
cin>>p[i].second>>p[i].first;
if(p[i].first==-1)p[i].first=inf;
else e++;
}
sort(p,p+n);
multiset<int> ms;
for(int i=n-1;i>=0;i--){
ms.insert(p[i].second);
int cur=0,sum=0;
for(auto j:ms){
mn[i][cur]=sum;
sum+=j; cur++;
}
mn[i][cur]=sum;
}
long double ans=inf;
for(int am=0;am<=min(e,k);am++){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++)dp[i][j]=inf;
}
dp[0][0]=(long double)p[0].second/(long double)(am+1);
if(am)dp[0][1]=p[0].first;
long double sol=inf;
if(am==0)sol=dp[0][0]+(long double)mn[1][k-1];
if(am==1)sol=min(sol,dp[0][1]+(long double)mn[1][k-1]/(long double)(2));
for(int i=1;i<n;i++){
for(int j=0;j<=min(am,i+1);j++){
dp[i][j]=dp[i-1][j]+(long double)p[i].second/(long double)((am+1));
if(j)dp[i][j]=min(dp[i][j],dp[i-1][j-1]+(long double)p[i].first/(long double)(j));
if(j==am && k-i-1>=0)sol=min(sol,dp[i][j]+(long double)mn[i+1][k-i-1]/(long double)((am+1)));
}
}
ans=min(ans,sol);
}
cout<<setprecision(15)<<ans;
}