//#pragma GCC target("avx2") #include using namespace std; using ll=long long; #define int ll #define rep(i,a,b) for(int i=a;i<(b);i++) #define sz(x) (int)(x).size() #define all(x) begin(x), end(x) using pii=pair; using vi=vector; #define fi first #define se second #define pb push_back const int N=2e5+100; ll h[N]; int n; int k; double calc(int n,int x,int y) { ll sum=0; for(int i=1;i<=n;i++) sum+=(h[i]+x-1)/x; return double(sum)/y; } double ans(int x) { if (x <= 0 || x >= k) return 1e18; int s = 0; for (int i=1; i<=n; i++) s += (h[i] + x - 1) / x; return s*1.0/(k-x); } signed main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); cin>>n>>k; for(int i=1;i<=n;i++) cin>>h[i]; sort(h+1, h+n+1); vector v; for (int i=1; i<=n; i++) if (i==1 || h[i] != h[i-1]) v.pb(h[i]); pair mn = {1e18, -1}; mt19937_64 mt(time(0)); for (int i=1; ;i++) { int x; x = -1; if (i-1 < v.size()) x = v[i-1]; mn = min(mn, {ans(x), x}); x = i; mn = min(mn, {ans(x), x}); x = k/2 + 1 - i; mn = min(mn, {ans(x), x}); x = k/2 - 1 + i; mn = min(mn, {ans(x), x}); x = mt()%k; mn = min(mn, {ans(x), x}); x = v[mt()%v.size()]; mn = min(mn, {ans(x), x}); x = h[mt()%n + 1]; mn = min(mn, {ans(x), x}); if (clock() * 1.0 / CLOCKS_PER_SEC > 3.8) break; } cout< "<