#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
void solve(){
int N,K;
cin >> N >> K;
vector<pair<long double,long double>> A(N),B(N);
for(int i=0;i<N;i++){
cin >> A[i].first >> B[i].first;
A[i].second = i,B[i].second=i;
}
sort(A.begin(),A.end());
sort(B.begin(),B.end());
long double ans = 1e18;
for(int k=0;k<=K;k++){
long double sum = 0;
vector<bool> take(N,false);
int i=0;
long double coef=0;
while(coef<k&&i<N){
if(B[i].first!=-1){
sum += B[i].first/(coef+(long double)1);
coef=coef+1;
take[B[i].second] = true;
}
i++;
}
//cout << sum << endl;
i=0;
int m=0;
//cout << coef << endl;
while(m+coef<K){
if(!take[A[i].second]){
m++;
take[A[i].second]=true;
sum += A[i].first/(coef+(long double)1);
}
i++;
}
//cout << sum << endl;
//for(int i=0;i<N;i++){
//cout << take[i] << ' ';
//}
//cout << endl;
ans = min(ans,sum);
}
cout << fixed << setprecision(10) << ans << endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t=1;
//cin >> t;
while(t--){
solve();
}
}
# | 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... |