Advertisement
Guest User

Untitled

a guest
May 21st, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. using namespace std;
  6. long long int k, n;
  7.  
  8. bool check(long long int x, const vector<int>& a) {
  9.     int i = 0;
  10.     long long int  counter = 0;
  11.     long long  contain = 0;
  12.     while(i < n) {
  13.         contain = 0;
  14.         while(contain <= x && i < n) {
  15.             if(a[i] <= x - contain) {
  16.                 contain += a[i];
  17.                 i++;
  18.             } else break;
  19.         }
  20.  
  21.         if(contain == 0 && a[i] > x) return false;
  22.         counter++;
  23.     }
  24.  
  25.     if(counter <= k) return true;
  26.     return false;
  27. }
  28.  
  29. int main() {
  30.     cin >> k >> n;
  31.     vector<int> a;
  32.     long long  s = 0;
  33.  
  34.     for (int i = 0; i < n; i++) {
  35.         int t;
  36.         cin >> t;
  37.         s += t;
  38.         a.push_back(t);
  39.     }
  40.     sort(a.begin(), a.end());
  41.  
  42.     long long int l, r;
  43.     l = 1;
  44.     r = s;
  45.  
  46.     while(r - l > 1) {
  47.         long long int m = (l + r) / 2;
  48.         if(check(m, a)) r = m;
  49.         else l = m;
  50.     }
  51.  
  52.     cout << r;
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement