#include<bits/stdc++.h>
using namespace std;
#define debug(v) //cout << #v << ": " << v << endl;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int MAXN = 2e5+5, inf = 2e9;
const ll INF = 1e18;
int n, k;
vector<pii> states;
bool cmp(pii x, pii y){
return x.second < y.second;
}
long double ans = inf;
int main(){
cin >> n >> k;
for(int i = 1; i <= n; i++){
int a, b; cin >> a >> b;
b = b<0? inf:b;
states.push_back({a, b});
}
sort(states.begin(), states.end(), cmp);
for(int T = 0; T <= k; T++){
if(T>0 && states[T-1].second == inf) break;
long double efficiency = 1, spent = 0;
for(int i = 0; i < T; i++){
spent += states[i].second/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; T+i < k; i++) sum += left_over[i];
spent += sum/efficiency;
debug(T);
debug(spent)
ans = min(ans, spent);
}
cout << fixed << setprecision(16) << ans << '\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... |