Cod sursa(job #284357)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 21 martie 2009 17:39:43
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<stdio.h>
int n,k;
int v[16010];

void read()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++)
		scanf("%d",&v[i]);
}

int rez(long c)
{
	int i;
	long s=0,nr=0;
	for(i=1;i<=n;i++)
	{
		if(s+v[i]>c)
		{
			s=0;
			nr++;
		}
		s=s+v[i];
	}
	nr++;
	return nr<=k;
}

void cautare()
{
	long st=1,dr=2000000000,m;
	while(st!=dr)
	{
		m=(st+dr)>>1;
		if(rez(m))
			dr=m;
		else
			st=m+1;
	}
	printf("%ld\n",dr);
}

int main()
{
	read();
	cautare();
	return 0;
}