Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
127726 | 黄一航 | 花费 | C++ | 通过 | 100 | 0 MS | 264 KB | 537 | 2024-01-25 10:03:18 |
#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; }