using namespace std;
int a[100001],m,n,mid;
int check(){
int i=1,j=1,l=0;
while(i<=n)
{
l+=a[i];
if(l>mid) {j++;l=a[i];}
i++;
}
if(j<=m) return 1; //差别
else return 0;
}
int main()
{
int i,j,left=0,right=0;
cin>>n>>m;
for(i=1;i<=n;i++)
{
cin>>a[i];
right+=a[i];
if(a[i]>left) left=a[i];
}
while(left<right)
{
mid=(left+right)/2;
if(check())
right=mid;
else left=mid+1;
}
cout<<right;
system("pause");
return 0;
}
#include<iostream>
using namespace std;
int a[100001],m,n,mid;
int check(){
int i=1,j=1,l=0;
while(i<=n)
{
l+=a[i];
if(l>mid) {j++;l=a[i];}
i++;
}
if(j<m) return 1; //差别
else return 0;
}
int main()
{
int i,j,left=0,right=0;
cin>>n>>m;
for(i=1;i<=n;i++)
{
cin>>a[i];
right+=a[i];
if(a[i]>left) left=a[i];
}
while(left<right)
{
mid=(left+right)/2;
if(check())
right=mid-1; //差别
else left=mid;
}
cout<<left;
return 0;
}
两程序应该都可以,为什么下一个就不能呢?