刚刚提交了几遍同样的代码,次次分数都不一样,然后试了题解之后发现题解能过,我的分数一直蹦迪;
我的代码:
#include <bits/stdc++.h>
using namespace std;
int a[100100];
int n, m, k;
bool check(int x) {
int m1 = m;
for (int i = 1; i <= n; i ++) {
int sum = a[i], cnt = 1;
while (sum + a[i + 1] <= x && i <= n) i ++, cnt ++, sum += a[i];
m1 --;
}
return m1 >= 0;
}
int main() {
cin >> n >> m;
k = (n + m - 1) / m;
int l, r, sum = 0;
for (int i = 1; i <= n; i ++) {
cin >> a[i];
sum += a[i];
l = max(l, a[i]);
}
r = min(sum, int(1e9));
while (l <= r) {
int mid = r + l >> 1;
if (check(mid)) r = mid - 1;
else l = mid + 1;
}
cout << l;
}
