Maximum Running Time of N Computers LeetCode solution in C++
1class Solution {2public:3bool canFit(int n, long timeSpan, vector<int> batteries) {4long currBatSum = 0;5long targetBatSum = n * timeSpan;6for (auto it : batteries) {7if (it < timeSpan)8currBatSum += it;9else10currBatSum += timeSpan;1112if (currBatSum >= targetBatSum) return true;13}1415return false;16}1718long long maxRunTime(int n, vector<int> &batteries) {19long totalSum = 0;20long low = *min_element(batteries.begin(), batteries.end());2122for (auto it : batteries) {23totalSum += it;24}2526long high = totalSum / n;27long ans = -1;2829while (low <= high) {30long mid = low + (high - low) / 2;31if (canFit(n, mid, batteries)) {32ans = mid;33low = mid + 1;34} else {35high = mid - 1;36}37}38return ans;39}