#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
//~ cerr << "A\n";
vector<array<ld, 2>> a(n);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < 2; ++j) {
cin >> a[i][j];
}
}
ld res = LLONG_MAX;
for (int i = 0; i < (1 << n); ++i) {
vector<ld> pick1, pick2;
for (int j = 0; j < n; ++j) {
if (i >> j & 1) pick1.push_back(a[j][1]);
else pick2.push_back(a[j][0]);
}
sort(begin(pick1), end(pick1));
sort(begin(pick2), end(pick2));
if (pick1.size() > 0 && pick1[0] == -1) continue;
ld tim = 0;
ld mult = 1;
for (int i = 0; i < min(k, (int)pick1.size()); ++i) {
tim += pick1[i] / mult;
mult += 1;
}
for (int i = 0; i < k - (int)pick1.size(); ++i) {
//~ cerr << i << " " << pick2.size() << endl;
tim += pick2[i] / mult;
}
//~ cerr << tim << endl;
res = min(res, tim);
}
cout << fixed << setprecision(3) << res << "\n";
}
# | 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... |