提交时间:2024-01-25 11:03:47

运行 ID: 127934

#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; }