leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0410.cpp (830B)
0 class Solution {
1 int res = INT_MAX;
3 bool doable(const vector<int> &nums, int cuts, long long maxi) {
4 long long acc = 0;
6 for (const int num : nums) {
7 if (acc + num <= maxi)
8 acc += num;
9 else {
10 if (--cuts < 0) return false;
11 acc = num;
12 }
13 }
15 return true;
16 }
18 public:
19 int splitArray(const vector<int> &nums, int k) {
20 long long low = 0, high = 0;
22 for (const long long n : nums) {
23 low = max(low, n);
24 high += n;
25 }
27 while (low < high) {
28 const auto mid = low + (high - low) / 2;
29 if (doable(nums, k - 1, mid))
30 high = mid;
31 else
32 low = mid + 1;
33 }
35 return low;
36 }
37 };