提交时间:2024-01-25 10:03:18
运行 ID: 127726
#include <bits/stdc++.h> #define int long long using namespace std; int n,m; int a[100005]; bool chk(int d) { int s = 0,ans = 1; for (int i = 1; i <= n; i++) if (s + a[i] <= d) s += a[i]; else s = a[i],ans++; return ans <= m; } signed main() { cin >> n >> m; int l = 0,r = 0; for (int i = 1; i <= n; i++) { cin >> a[i]; l = max(l,a[i]); r += a[i]; } while (l < r) { int mid = (l + r) >> 1; if (!chk(mid)) l = mid + 1; else r = mid; } printf("%lld\n",l); return 0; }