提交时间:2024-01-25 07:57:26

运行 ID: 127127

#include <bits/stdc++.h> using namespace std; int a[1005]; int n, m, s; bool check(int sum) { int id = 1, tot = 0; for (int i=1; i<=n; i++) { if (sum-tot >= a[i]) tot += a[i]; else if (a[i] > sum) return false; else { id++; if (id > m) return false; tot = a[i]; } } return true; } signed main() { scanf("%d%d", &n, &m); for (int i=1; i<=n; i++) scanf("%d", &a[i]), s += a[i]; int l = 1, r = s; while (l < r) { int mid = l + r >> 1; if (!check(mid)) { l = mid + 1; } else r = mid; } printf("%d", l); return 0; }