Advertisement
Fastrail08

Split array largest sum

Aug 16th, 2022
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. int splitArray(vector<int> &v, int subarrays){
  6.   int l = 0, r = 0, res = 0;
  7.   for(int i : v){
  8.     l = max(l, i);
  9.     r += i;
  10.   }
  11.   while(l <= r){
  12.     int mid = l + (r - l) / 2;
  13.     int subarrayReq = 1, subarraySum = 0;
  14.     for(int i = 0; i < (int) v.size(); i++){
  15.         subarraySum += v[i];
  16.         if(subarraySum > mid){
  17.           subarrayReq++;
  18.           subarraySum = v[i];
  19.         }
  20.     }
  21.     if(subarrayReq <= subarrays){
  22.       res = mid;
  23.       r = mid - 1;
  24.     }
  25.     else{
  26.       l = mid + 1;
  27.     }
  28.   }
  29.   return res;
  30. }
  31.  
  32. int main()
  33. {
  34.     int n;
  35.     cin >> n;
  36.     vector<int> v(n);
  37.     for(int i = 0; i < n; i++){
  38.       cin >> v[i];
  39.     }
  40.     int subarrays;
  41.     cin >> subarrays;
  42.     cout << splitArray(v, subarrays) << '\n';
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement