20分求解
查看原帖
20分求解
450498
miaozheyuan楼主2023/8/10 14:21
#include <iostream>
using namespace std;

int a[100005], n, k;

int f(int m) {
    int sum = 0, cnt = 0;
    for (int i = 1; i <= n; ++i) {
        if(a[i] > m)return 10000000;
        if(sum + a[i] <= m) sum += a[i];
        else {
            sum = a[i];
            cnt++;
        }
    }
    return cnt;
}

int main() {
    cin >> n >> k;
    for (int i = 1; i <= n; ++i) cin >> a[i];
    int l = 1, r = 1e9;
    while(l <= r) {
        int mid = (l + r) / 2;
        if(f(mid) > 100000 || f[mid] >= k)r = mid - 1;
        else l = mid + 1;
    }
    cout <<l;
    return 0;
}
2023/8/10 14:21
加载中...