#include<bits/stdc++.h>
using namespace std;
const int inf = 2e9;
int n, k;
vector<pair<int, int>> states;
bool cmp(pair<int, int> x, pair<int, int> y) {
if (x.second == y.second) return x.first > y.first;
return x.second < y.second;
}
int main() {
cin >> n >> k;
for (int i = 0; i < n; i++) {
int a, b;
cin >> a >> b;
if (b == -1) b = inf;
states.push_back({a, b});
}
sort(states.begin(), states.end(), cmp);
long double ans = inf;
for (int T = 0; T <= k; T++) {
if (T > 0 && states[T-1].second == inf) break;
long double spent = 0;
int efficiency = 1;
for (int i = 0; i < T; i++) {
spent += states[i].second / (long double) efficiency;
efficiency++;
}
vector<int> left_over;
for (int i = T; i < n; i++) {
left_over.push_back(states[i].first);
}
sort(left_over.begin(), left_over.end());
int sum = 0;
for (int i = 0; i < k - T; i++) {
sum += left_over[i];
}
spent += sum / (long double) efficiency;
if (ans > spent) ans = spent;
}
cout << fixed << setprecision(16) << ans << endl;
return 0;
}
# | 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... |