Advertisement
JuliaMelkozerova

HW4A

Apr 5th, 2020
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. bool mid_sum_check(vector <int> const & V,  int N, int K, int mid_sum) {
  7.     int count = 1;
  8.     int sum = 0;
  9.    
  10.     for (int i = 0; i < N; i++) {
  11.         if (V[i] > mid_sum)
  12.             return false;
  13.            
  14.         sum += V[i];
  15.        
  16.         if (sum > mid_sum) {
  17.             count++;
  18.             sum = V[i];
  19.         }
  20.     }
  21.  
  22.     return (count <= K) ? true : false;
  23. }
  24.  
  25. int min_sum(vector <int> const & V, int N, int K) {
  26.     int L = 1;
  27.     int R = 0;
  28.     for (int i = 0; i < N; i++) {
  29.         R += V[i];
  30.     }
  31.  
  32.     int answer = 0;
  33.     while (L <= R) {
  34.         int mid_sum = R - (R - L) / 2;
  35.         if (mid_sum_check(V, N, K, mid_sum)) {
  36.             answer = mid_sum;
  37.             R = mid_sum - 1;
  38.         }
  39.         else {
  40.             L = mid_sum + 1;
  41.         }
  42.     }
  43.     return answer;
  44. }
  45.  
  46. int main()
  47. {
  48.     int K, N;
  49.     cin >> K >> N;
  50.    
  51.     vector <int> V (N);
  52.     for (int i = 0; i < N; i++)
  53.         cin >> V[i];
  54.    
  55.     int sum = min_sum(V, N, K);
  56.     cout << sum;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement