#include using namespace std; int main() { int64_t n, k; cin >> n; vector< long double > l(n); for (int i=0; i> l[i]; cin >> k; auto check = [=](long double mid) { long double sm = 0; for (int i=0; i= k; }; // [ok, ng) okはギリギリ満たす数, ngがギリギリ満たさない数 // そのうち, 満たす数の最大値を求めたい // ただし, 今回は小数が答えなので範囲を狭めることで解を求める // 1度二分探索をすると, 解の範囲は(1/2)になるので, // 10^10の範囲を10^-9以下(怖いので10^-10未満にします)にするためには, // log2(n) = (10^10)/(10^10) = 10^20を解いて, 大体n >= 67くらい? // まぁ100回も回せば十分でしょう long double ok = 0.0, ng = 1.0 + 1e10; for (int i=0; i<100; ++i) { long double mid = (ng+ok)/2; if (check(mid)) ok = mid; else ng = mid; } double ans = ok; cout << fixed << setprecision(10) << ans << endl; return 0; }