#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 513;
int a[N], b[N], s[N];
struct Pair{
int a, b;
Pair() = default;
Pair(int _a, int _b) : a(_a), b(_b){};
};
vector<Pair> vp;
int32_t main(){
int n, k;
cin >> n >> k;
for(int i = 0; i < n; i++){
cin >> a[i] >> b[i];
vp.push_back({a[i], b[i] == -1 ? 1e9 : b[i]});
}
sort(vp.begin(), vp.end(), [](Pair x, Pair y){
return x.b < y.b;
});
for(int i = 0; i < n; i++){
s[i + 1] = s[i] + vp[i].a;
}
long double ans = 1e18LL;
for(int i = 0; i <= k; i++){
long double res = 0;
for(int j = 0; j < i; j++){
res += (long double) vp[j].b / (j + 1);
}
res += (long double) (s[k] - s[i]) / (i + 1);
ans = min(ans, res);
}
cout << fixed << setprecision(15) << ans << endl;
}
Compilation message
Main.cpp: In function 'int32_t main()':
Main.cpp:21:34: warning: narrowing conversion of '((b[i] == -1) ? 1.0e+9 : (double)b[i])' from 'double' to 'long long int' [-Wnarrowing]
21 | vp.push_back({a[i], b[i] == -1 ? 1e9 : b[i]});
| ~~~~~~~~~~~^~~~~~~~~~~~
Main.cpp:32:20: error: unable to find numeric literal operator 'operator""LL'
32 | long double ans = 1e18LL;
| ^~~~~~
Main.cpp:32:20: note: use '-fext-numeric-literals' to enable more built-in suffixes