20分求助 完全不知道错哪里了
查看原帖
20分求助 完全不知道错哪里了
943146
wlxsp楼主2023/3/7 20:28
#include <bits/stdc++.h>
using namespace std;


vector<long long>v1;
vector<int>v2;

bool check(long long x, int m) {
    long long sum = 0;
    for(int i = 0; i < v1.size() - 1; i++) {
        if(v1[i] > x) return false;
        sum += v1[i];
        if((sum < x && sum + v1[i + 1] > x) || sum == x) {
            sum = 0;
            m--;
        }
    }

    if(m != 1) return false;
    else return true;
}

int main() {
    int n, m;
    cin >> n >> m;
    long long l = 0, r = 1;
    while(n--){
        long long x;
        cin >> x;
        v1.push_back(x);
        r += x;

    }
    cout<< v1.size()<<endl;

    while(l + 1 < r) {
        long long mid = (l + r) / 2;
        if(check(mid, m)) {
            r = mid;
        } else l = mid;
    }
    if(check(l, m))cout << l << endl;
    else
        cout << r << endl;
}

2023/3/7 20:28
加载中...