#include <bits/stdc++.h>
#define int long long
#define ll long long
#define fi first
#define se second
#define lf ((id<<1))
#define rg ((id<<1)|1)
#define md ((l+r)>>1)
#define pb push_back
#define ld long double
using namespace std;
const int MAXN = 2e5+10;
const ld INF = 5e5+10;
typedef pair<ll,ll> pii;
void chmn(auto &a, auto b){ a = min(a, b); }
int n, k;
int a[MAXN], b[MAXN];
int done[MAXN], day;
ld ans = INF;
signed main(){
cin>>n>>k;
vector<pii> tot;
for(int i=1; i<=n; i++){
cin>>a[i]>>b[i];
if(b[i] != -1) tot.pb({b[i], i});
}
sort(tot.begin(), tot.end());
for(int col=0; col<=tot.size(); col++){ // number of collaborator
day++;
ld te = 0; int num = 1;
// ambil col-1 awal
for(int i=0; i<=col-1; i++){
done[tot[i].se] = day;
te += (ld)tot[i].fi/num;
num++;
}
vector<int> vec;
for(int i=1; i<=n; i++){
if(done[i] == day) continue;
vec.pb(a[i]);
}
sort(vec.begin(), vec.end());
for(int i=0; i<k-col; i++)
te += (ld)vec[i]/num;
chmn(ans, te);
}
cout << fixed << setprecision(7) << 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... |