#include <bits/stdc++.h>
#define int long long
int32_t main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  int n;
  std::cin >> n;
  int k;
  std::cin >> k;
  std::vector<std::pair<int, int>> b(n);
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    std::cin >> b[i].first;
    std::cin >> b[i].second;
    if (b[i].second == -1) {
      cnt++;
      b[i].second = 1e4;
    }
  }
  cnt = n - cnt;
  long double best = -1;
  for (int i = 0; i <= std::min(cnt, k); i++) {
    std::sort(b.begin(), b.end(),
              [&](std::pair<int, int> a, std::pair<int, int> b) {
                return a.second < b.second;
              });
    std::sort(b.begin() + i, b.end(),
              [&](std::pair<int, int> a, std::pair<int, int> b) {
                return a.first < b.first;
              });
    long double ans = 0;
    for (int j = 0; j < i; j++) {
      ans += (long double)(b[j].second) / (long double)(j + 1);
    }
    int cnt1 = (k - i);
    for (int j = i; j < n; j++) {
      ans += (long double)(b[j].first) / (long double)(i + 1);
      cnt1--;
      if (cnt1 == 0) {
        break;
      }
    }
    // std::cout << i << ' ' << ans << ' ' << cnt1 << std::endl;
    if (best == -1 || best > ans) {
      best = ans;
    }
  }
  std::cout << std::setprecision(20) << std::fixed << best;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |