#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef long double ld;
#define st first
#define nd second
#define f(a, c, b) for (int a = c; b > a; a++)
#define pb push_back
#define all(a) a.begin(), a.end()
#define wczytaj(a, c, n) a.resize(n); f(i, c, n) cin >> a[i];
#define sz(a) int(a.size())
#define wypisz(a, c) f(i, c, sz(a)) cout << a[i] << " "; cout << "\n";
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
const ld INF = 1'000'000'000'000'000'000;
vector<pair<ll, ll>> a(n);
f(i, 0, n) cin >> a[i].nd >> a[i].st;
f(i, 0, n) if (a[i].st == -1) a[i].st = INF;
sort(all(a));
vector<ld> A(n + 1);
vector<ld> B(n + 1);
f(i, 0, n) A[i + 1] = a[i].nd;
f(i, 0, n) B[i + 1] = a[i].st;
vector<vector<ld>> dp_suf(n + 2, vector<ld>(n + 2));
vector<vector<ld>> dp(n + 1, vector<ld>(n + 1));
ld ans = INF;
f(ile, 0, k) {
f(j, 1, n + 2) f(i, 1, n + 2) dp_suf[i][j] = INF;
f(i, 1,n + 2) dp_suf[i][0] = 0;
for (int i = n; i > 0; i--) {
for (int j = (n - i + 1); j > 0; j--) {
dp_suf[i][j] = min(dp_suf[i + 1][j], (dp_suf[i + 1][j - 1] + (A[i]/ld(ile + 1))));
}
}
if (ile == 0) {
ans = min(ans, dp_suf[1][k]);
continue;
}
f(i, 0, n + 1) f(j, 0,n + 1) dp[i][j] = INF;
dp[0][0] = 0;
f(i, 1, n + 1) {
f(j, 1, min(ile, i) + 1) {
dp[i][j] = min(dp[i][j], dp[i - 1][j] + A[i]/ld(ile + 1));
dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + (B[i]/ld(j)));
}
}
f(i, 1, n + 1) {
if (i <= k) ans = min(ans, dp[i][ile] + dp_suf[i + 1][k - i]);
}
}
cout << fixed << setprecision(6) << ans;
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... |