#include #include using namespace std; #define pb push_back #define Pbk pop_back #define p_fr push_front #define P_fr pop_front #define eb emplace_back #define fi first #define se second #define mp make_pair #define vec vector typedef unsigned long long ull; typedef long long ll; typedef long double ld; #pragma GCC optimize("Ofast,unroll-loops,inline") #pragma GCC optimize("fast-math,no-stack-protector,no-exceptions,no-rtti") #pragma GCC target("sse","sse2","sse3","ssse3","sse4.1","sse4.2","popcnt") #pragma GCC target("avx","avx2","fma","bmi","bmi2","lzcnt") #pragma GCC optimize("align-functions=16,align-jumps=8,align-loops=8") const int N = 1e5 + 500; //const int INF = LLONG_MAX-1; const int INF = INT_MAX-1; const int MOD = 1000000007; //const int MOD = 25445893580447; //hashing only #define pii pair int ceildiv(int a, int b){ if (b < 0) { a = -a; b = -b; } if (a >= 0) { return (a + b - 1) / b; } else { return a / b; } } int floordiv(int a, int b){ int q = a / b; int r = a % b; if (r != 0 and ((r > 0) != (b > 0))) { q--; } return q; } string cts(char a){ return string(1, a); } vec indexedset(N); const int LOG = 21; void insertv(int i, int val){ for (; i < N; i += i & -i) indexedset[i] += val; } int order_of_ki(int x){ if (x <= 1) return 0; int sum = 0; for (int i = x-1; i > 0; i -= i & -i) sum += indexedset[i]; return sum; } int find_by_ordur(int k){ int x = 0; for (int i = LOG; i >= 0; i--){ int nxt = x + (1 << i); if (nxt < N and indexedset[nxt] < k){ x = nxt; k -= indexedset[x]; } } return x+1; } void sol(){ int n; cin >> n; vec a(n); for(int i = 0; i < n; i++) cin >> a[i]; int k; cin >> k; ld l = 0.001, r = 1e18, goodies; int cnt = 300; while(cnt--){ ld mid = l + (r-l) / 2; // cout << l << " " << mid << " " << r << '\n'; int cnt = 0; for(int i = 0; i < n; i++) cnt += a[i] / mid; if(cnt >= k){ goodies = mid; l = mid; } else r = mid; } cout << fixed << setprecision(15) << goodies << "\n"; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen(".INP", "r", stdin); // freopen(".OUT", "w", stdout); int t = 1; // cin >> t; while(t--){ sol(); } } // RSSQQM // TVTRPKK // STRRPLJ // NPOLLJ // LQOIL // NNQNIL // OOQQMIL // SSSRROMN // WWVVUUTTTSS // WWWWWVVVUUUUTTS // EKPRSX XWWWWWWWVVVUUVVUTS //FHNOQUWWWWXXXXXXXX XWWWWWWWWWVVUUUVVVUUT //MNNOQSSUVWWWWWWWXXXXXXXXXWW XXWWWWWWWWWWVVUUUUVVVVVUT // NPRRRRSSSTVWWWWWWWXXXXXXXXXXXXXXXX XXXXWWWWWWWWWVVVUTUUUVVVVVVT // SRRRRRSSSSTUVWWWWWWWXXXXXXXXXXXXXXXXXXXXXY WXXXXXXWWWWWWWWWWWVVUTTTTUUVVVVVVUT // TSRRRRRRRSSSSSSUVWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWWWWWWWWWVVVUTTTTTTTUUUVVVVUT // TSRRRRRRRRRSSSSSSSTUVVWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWWWWWWWWWWVVUTSSTTTTTTTUUUUUUUUTS // SRRRRRRRRRRRRSSSSSSSSTTUVVWWWWWWWWWWXXXXXXXXXXXXXXXXWWWWWWWWWWWVVVUTTSSSSSSTTTTTTTUUUUUUTT // SRRRRRRRRRRRRRSSSSSSSSSSSSTTUUVVWWWWWWWWWWWWWWWWWWWWWWWVVVUTTSSSSSSSSSSSSSTTTTTTTTTTTTT // SRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSTTTTTUUUUUUTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTT // SSRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS // SSSRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRRSSSSS // SSRRRRQQQRQQRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRRRRRRRRRSSS // SSSRRRQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSST // SSSSRRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRSSS // SSSSSSRRRRRQQQQQQQQQQQQQQQQQQQRRRRRRSSSSS // SSSSSSSSSSSSSSSSTT //