|
沙发
楼主 |
发表于 2019-6-9 11:13:50
|
只看该作者
- #include <iostream>
- using namespace std;
- int N,M,a[100010],maxs,l,r,m;
- bool b;
- bool can(int m)
- {
- int s=0,c=1;
- for (int i=1; i<=N; i++)
- {
- s+=a[i];
- if (s>m)
- {
- c++;
- s=a[i];
- }
- }
- return (c<=M);
- }
- int main()
- {
- cin>>N>>M;
- l=r=0;
- for (int i=1; i<=N; i++)
- {
- cin>>a[i];
- r+=a[i];
- l=max(l,a[i]);
- }
- while (l<=r )
- {
- m=(l+r)/2;
- ///cout<<l<<' '<<r<<endl;
- if (can(m)) r=m-1;
- else l=m+1;
- }
- cout<<l;
- return 0;
- }
复制代码 |
|