開啟章節選單

907 Winterim Backpacking Trip

#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define fi first
#define se second
#define INF LONG_LONG_MAX/1000
#define WA() cin.tie(0)->sync_with_stdio(0)
#define all(x) (x).begin(), (x).end()
#define int long long
#define PII pair<int, int>

signed main() { WA();
    int n, k; while (cin >> n >> k) {
        vector<int> v(n+1); int l, r; l = r = 0;
        for (auto &i : v) cin >> i, r += i, l = max(l, i);
        while (l < r) {
            int m = l + ((r-l)>>1), now = 0, cnt = 1;
            for (auto &i : v) {
                if (now+i > m) cnt++, now = 0;
                now += i;
            }
            if (cnt > k+1) l = m+1;
            else r = m;
        }
        cout << l << '\n';
    }
}