#include<bits/stdc++.h>
using namespace std;
#define task "a"
#define se second
#define fi first
#define ll long long
#define ii pair<ll, ll>
const long mxN = 2e5 + 7, inf = 1e9 + 7;
int n, k;
double dp[mxN];
ii a[mxN];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen(task".INP", "r", stdin);
//freopen(task".OUT", "w", stdout);
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
cin >> a[i].se >> a[i].fi;
if (a[i].fi == -1)
a[i].fi = inf;
}
sort(a + 1, a + n + 1);
double ans = inf;
for (int i = 0; i <= k; i++)
{
for (int j = 1; j <= k; j++)
dp[j] = inf;
for (int j = 1; j <= n; j++)
{
for (int u = k; u >= 0; u--)
{
dp[u + 1] = min(dp[u + 1], dp[u] + double(a[j].se) / (i + 1));
int v = j - u;
if (0 < v && v <= i)
{
if (a[i].fi == inf)
dp[u] = inf;
else
dp[u] += double(a[j].fi) / v;
}
}
}
ans = min(ans, dp[k - i]);
}
cout << fixed << setprecision(9) << ans;
}
# | 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... |