#include using namespace std; #pragma GCC target("avx2") #pragma GCC optimize("O3") bool better(pair a, pair b) { __int128_t prod1 = a.first; prod1 *= b.second; __int128_t prod2 = b.first; prod2 *= a.second; return prod1 < prod2; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; vector h(n); for (int i = 0; i < n; ++i) { cin >> h[i]; } pair best = {(long long)2e18 + 1, 1}; int l = 1, r = k-1; while (r - l >= 5) { int mid1 = l + (r-l) / 3; int mid2 = l + 2*(r-l)/3; long long hits1 = 0, hits2 = 0; for (int i = 0; i < n; ++i) { hits1 += (h[i] + mid1 - 1) / mid1; hits2 += (h[i] + mid2 - 1) / mid2; } if (better({hits1, k - mid1}, {hits2, k - mid2})) { r = mid2; } else { l = mid1; } } int ans = 0; for (int mid = l; mid <= r; ++mid) { long long hits = 0; for (int i = 0; i < n; ++i) { hits += (h[i] + mid - 1) / mid; } if (better({hits, k - mid}, best)) { best = {hits, k-mid}; ans = mid; } } cout << ans << ' ' << k - ans << '\n'; return 0; }