開啟章節選單

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';
    }
}