Cod sursa(job #494140)

Utilizator raduspowertinca radu raduspower Data 20 octombrie 2010 20:29:30
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <fstream>
using namespace std;

int v[1<<14],n,k,maxim;

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

int transp(int x)
{
	int s=0,c=0,i;
	for (i=1;i<=n;i++)
		if (s+v[i]<=x)
			s+=v[i];
		else
		{
			c++;
			s=v[i];
		}
	if (s)
		c++;
	return c;
}
		
int bs()
{
	int i,step=1<<27;
	for (i=maxim-1;step;step>>=1)
		if (transp(i+step)>k)
			i+=step;
	return i+1;
}

int main()
{
	int i;
	in>>n>>k;
	for (i=1;i<=n;i++)
	{
		in>>v[i];
		if (v[i]>maxim)
			maxim=v[i];
	}
	out<<bs()<<"\n";
	return 0;
}