Cod sursa(job #498529)

Utilizator mgntMarius B mgnt Data 5 noiembrie 2010 13:43:42
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <fstream>
using namespace std;

int const maxn=16*1000;
int S[maxn],N,K;

bool ok(int w)
{	int i,l=0,c=1,t;
	for(i=0;N>i;++i)
	{	t=l+S[i];
		if(t>w)
		{	l=S[i];++c;
			if(c>K){return false;}
		}
		else{l=t;}
	}
	return true;
}

int main()
{	ifstream is("transport.in");
	ofstream os("transport.out");
	is>>N>>K;int i,a,b,m;
	for(i=0;N>=i;++i){is>>S[i];}
	a=S[0];for(i=1;N>i;++i){if(S[i]<a){a=S[i];}}
	b=S[0];for(i=1;N>i;++i){if(S[i]>b){b=S[i];}}
	b*=((N/K)+((0!=(N%K))?1:0));
	while(a<b)
	{	m=(a+b)/2;
		if(ok(m)){b=m;}else{a=m+1;}
	}
	os<<b<<endl;
}