Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
127934 | 林扬泉 | 花费 | C++ | 通过 | 100 | 0 MS | 260 KB | 564 | 2024-01-25 11:03:47 |
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,m; int a[N]; bool check(int mid){ int sum=0; int res=1; for(int i=1;i<=n;i++){ if(sum+a[i]<=mid){ sum+=a[i]; } else{ sum=a[i]; res++; } } return res>m; } int main(){ scanf("%d%d",&n,&m); int l=0,r=0; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); if(a[i]>l){ l=a[i]; } r+=a[i]; } int mid=(l+r)>>1; while(l<r){ if(check(mid)){ l=mid+1; } else{ r=mid; } mid=(l+r)>>1; } printf("%d\n",mid); return 0; }