努力ing
你浪费的今天是昨天死去的人所渴望的明天!!!
 http://poj.org/problem?id=3273
#include<iostream>
using namespace std;	
int n,m;
bool erfen(int mid,int money[])
{
	int i,j;
	int sum=0;
	int couse=1;
	for(i=0;i<n;i++)
	{
		if(sum+money[i]<mid)
		{
			sum+=money[i];
		}
		else{
			sum=money[i];
			++couse;
		}
	}
	if(couse>m)
		return false;
	else return true;
}
int main()
{

    while(cin>>n>>m){
		int i;
		int money[100005];
		int low=0;
		int high=0;
		for(i=0;i<n;i++)
		{
			cin>>money[i];
			high+=money[i];
			if(low<money[i])
				low=money[i];
		}
		int mid=(low+high)>>1;

		while(low<high)
		{
			if(erfen(mid,money))
				high=mid-1;
			else
				low=mid+1;
			mid=(low+high)>>1;
		}
		cout<<mid<<endl;
	}
	return 0;
}

  

posted on 2013-05-09 21:41  努力ing  阅读(110)  评论(0)    收藏  举报