Cod sursa(job #284286)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 21 martie 2009 16:10:50
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 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=s+v[i];
		else
		{
			s=v[i];
			nr++;
		}
	if(s<=c)
		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",st);
}

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