1class Solution {2public:3int splitArray(vector<int> &nums, int m) {4long long low = 0;5long long res = 0;6long long high = 1000000005;7while (low <= high) {8long long mid = (low + high) / 2;9int cnt = 1;10long long current_sum = 0;11int can = 1;12for (auto num : nums) {13if (num > mid) {14can = 0;15break;16}17if (current_sum + num > mid) {18cnt++;19current_sum = 0;20}21current_sum += num;22}23if (can == 1) {24if (cnt > m) {25low = mid + 1;26} else {27res = mid;28high = mid - 1;29}30} else {31low = mid + 1;32}33}34return res;35}36};