Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
109602 | 凌艺樽 | 花费 | C++ | 通过 | 100 | 0 MS | 256 KB | 673 | 2023-11-09 21:00:59 |
#include <bits/stdc++.h> using namespace std; const int N=1e5+10; const int INF=0x3f3f3f3f; long long maxx; int minn=INF,maxn=-INF; int a[N],n,m; bool check(long long x) { int sum=0,f=1; for(int i=1;i<=n;i++) { sum+=a[i]; if(sum>x) { sum=a[i]; f++; } } return f<=m; } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; maxx+=a[i]; maxn=max(maxn,a[i]); minn=min(minn,a[i]); } if(n==m) { cout<<maxn; return 0; } long long l=minn,r=maxx+1; while(l<r) { long long mid=(l+r)>>1; if(check(mid)) r=mid; else l=mid+1; } cout<<r; return 0; }