leetcode2141 同时运行 N 台电脑的最长时间


思路:

二分。

实现:

 1 class Solution
 2 {
 3 public:
 4     bool check(vector<int>& nums, long long x, int n)
 5     {
 6         int l = nums.size();
 7         long long sum = 0;
 8         for (int i = 0; i < l; i++)
 9         {
10             sum += min((long long)nums[i], x);
11         }
12         return sum >= x * n;
13     }
14     
15     long long maxRunTime(int n, vector<int>& batteries)
16     {
17         long long l = 0, r = accumulate(batteries.begin(), batteries.end(), 0ll)/n;
18         long long res = 0;
19         while (l <= r)
20         {
21             long long m = l + r >> 1;
22             if (check(batteries, m, n)) { res = m; l = m + 1; }
23             else r = m - 1;
24         }
25         return res;
26     }
27 };