#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pll pair<long long, long long>
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define endl '\n'
#define ld long double
#define sz(x) static_cast<int>((x).size())
#define i5 tuple<int,int,int,int,int>
#define all(x) x.begin(), x.end()
#define iiii tuple<int, int,int,int>
#define ld long double
signed main(){
int n,k,c=0;cin>>n>>k;
vector<pll> v(n);
for(int i=0;i<n;i++){
cin>>v[i].s>>v[i].f;
if(v[i].f == -1){
v[i].f=1e9;
}
else c++;
}
sort(all(v), [&](pll a, pll b){
if(a.f==b.f)return a.s > b.s;
else return a.f < b.f;
});
ld ans=1e9;
for(int i=0;i<=c;i++){
ld cur=0;
for(int j=0;j<i;j++){
cur += v[j].f / (ld)(j+1);
}
vector<int> t;
for(int j=i;j<n;j++){
t.pb(v[j].s);
}
sort(all(t));
for(int j=0;j<k-i;j++){
cur+=(t[j] / (ld)(i+1));
}
ans=min(ans, cur);
}
cout<<fixed<<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... |