#include #include using namespace std; typedef long long int ll; double evaluate(const vector&h, ll hitsPerSec, ll damagePerHit){ double res=0; for (ll hi:h){ ll hitsNeeded = (hi + damagePerHit - 1) / damagePerHit; res += hitsNeeded / double(hitsPerSec); } return res; } int main() { ll n, sum; cin >> n >> sum; vector h(n); for (int i=0; i> h[i]; } double bestval = 1e18; ll bestHitsPerSec, bestDamagePerHit; for (ll hitsPerSec = max(0LL, sum/2 - 2000); hitsPerSec<=min(sum-1, sum/2+2000); hitsPerSec++){ ll damagePerHit = sum - hitsPerSec; double value = evaluate(h, hitsPerSec, damagePerHit); if (value < bestval) { bestDamagePerHit = damagePerHit; bestHitsPerSec = hitsPerSec; bestval = value; } }cout << bestDamagePerHit << ' ' << bestHitsPerSec << '\n'; /*ll hitsPerSec = sum/2; ll damagePerHit = (sum+1)/2; double value = evaluate(h, hitsPerSec, damagePerHit); while (hitsPerSec > 1){ double newval = evaluate(h, hitsPerSec-1, damagePerHit+1); if (newval < value) { value=newval; hitsPerSec--; damagePerHit++; } else { break; } } ll hitsPerSec2 = (sum+1)/2; ll damagePerHit2 = (sum)/2; double value2 = evaluate(h, hitsPerSec2, damagePerHit2); while (damagePerHit2 > 1){ double newval = evaluate(h, hitsPerSec2-1, damagePerHit2+1); if (newval < value2) { value2=newval; hitsPerSec2--; damagePerHit2++; } else { break; } } if (value < value2){ cout << damagePerHit << ' ' << hitsPerSec << '\n'; } else { cout << damagePerHit2 << ' ' << hitsPerSec2 << '\n'; }*/ return 0; }