Cod sursa(job #640452)

Utilizator ELHoriaHoria Cretescu ELHoria Data 25 noiembrie 2011 19:30:36
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int N , K ,  v[1<<14] , cmin = int(2e9) , s;

bool doable(const int &cap)
{
	int s = 0 , t = 0;
	for(int i=1;i<=N;++i)
	{
		if(s+v[i]>cap)
			t++ , s = v[i];
		else
			s+=v[i];
		if(v[i]>cap) return 0;
	}

	if(s<=cap) t++; else t = K + 1;
	return t<=K;
}

int main()
{
	fin>>N>>K;
	for(int i=1;i<=N;++i)
		fin>>v[i] , s+=v[i];

	int  m , l , r;
	l = 1 , r = s;
	while(l<=r)
	{
		m = l + (r-l)/2;
		if(doable(m))
		{
			cmin = min(cmin,m);
			r = m - 1;
		}
		else
		l = m + 1;
	}
	fout<<cmin<<'\n';
	return 0;
}