Advertisement
Ritam_C

Splitting an Array

Feb 14th, 2022
598
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.71 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. typedef long long ll;
  3. typedef unsigned long long ull;
  4. #define vi vector<int>
  5. #define vll vector<ll>
  6. #define tests int t; cin >> t; while(t--)
  7. #define pb push_back
  8. using namespace std;
  9.  
  10. int n, k;
  11. vll v;
  12.  
  13. bool good(ll m) {
  14.     int i = 0, c = 0;
  15.     while(i < n) {
  16.         int j = i+1;
  17.         ll s = v[i];
  18.         if(s > m) return false;
  19.         while(j < n && s+v[j] <= m) s += v[j++];
  20.         i = j; c++;
  21.     }
  22.     return c <= k;
  23. }
  24.  
  25. int main() {
  26.     ios_base::sync_with_stdio(false);
  27.     cin.tie(NULL); cout.tie(NULL);
  28.     cin >> n >> k;
  29.     v.resize(n);
  30.     for(ll& i : v)
  31.         cin >> i;
  32.     ll l = 0, r = 1e15;
  33.     while(l <= r) {
  34.         ll m = l+(r-l)/2;
  35.         if(good(m)) r = m-1;
  36.         else l = m+1;
  37.     }
  38.     cout << l << "\n";
  39.     return 0;
  40. }
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement