Cod sursa(job #423775)

Utilizator IAmASuperCerealVictor Andrei IAmASuperCereal Data 24 martie 2010 11:53:31
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include<stdio.h>
int n,k,a[10000],nr,nr2=0;
bool ok(int x)
{
	nr=0;
	for(int i=1;i<=n;i++)
		if(nr+a[i]>x)
		{
			nr=a[i];
			nr2++;
		}
		else
			nr+=a[i];
	if(nr2>k)
		return false;
	return true;
}
int bs()
{
	int i,pas=1<<19;
	for(i=0;pas;pas>>=1)
		if(!(ok(i+pas)))
			i+=pas;
	return i+1;
}
int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	printf("%d",bs());
	return 0;
}