讨论 / 求助
shine_yin520 2011-11-07 18:50:00
点我顶贴 收藏 删除
代码如下

#include<iostream>

#include<string.h>

#include<stdlib.h>

using namespace std;

int main()

{

long long w[10010]={};

long long left=0,right=0;

long long n,m;

cin>>n>>m;

for (int i=1;i<=n;i++)

{

scanf("%lld",&w[i]);

if (w[i]>left)

left=w[i];

right+=w[i];

}

while (left!=right)

{

long long tmp=(left+right)/2;

long long i=1,j=0,k=1,c=1;

while (k<=n && c==1)

{

if (j+w[k]<=tmp)

{

j=j+w[k];

k++;

}

else

{

k++;

j=w[k];

i++;

}

if (i>m)

c=0;

}

if (c==1)

right=tmp;

else

left=tmp+1;

}

cout<<left;

// system("pause");

return 0;

}

wa:0

求找错。。。谢谢

查看更多回复
提交回复