#include #ifndef LOCAL_ #define fprintf if( false ) fprintf #endif // LOCAL_ #define dumpi(x1) fprintf(stderr, "#%s.%d (%s) = (%d)\n", __func__, __LINE__, #x1, x1); #define dumpl(x1) fprintf(stderr, "#%s.%d (%s) = (%ld)\n", __func__, __LINE__, #x1, x1); #define dumpd(x1) fprintf(stderr, "#%s.%d (%s) = (%lf)\n", __func__, __LINE__, #x1, x1); long n; long xs[212345]; long k; bool check(double x) { if( x == 0 ) return false; long res = 0; for(int i = 0; i < n; ++i) { res += (xs[i] / x + 1e-10); } dumpl(res); return k <= res; } int main() { scanf("%ld", &n); for(int i = 0; i < n; ++i) { scanf("%ld", &xs[i]); } scanf("%ld", &k); double z = 0; double diff = (1LL << 40); for(int i = 120; i >= 0; --i) { double nz = z + diff; diff /= 2; dumpd(nz); if( check(nz) ) { z = nz; continue; } } printf("%.20lf\n", z); return 0; }