Cod sursa(job #211112)

Utilizator tudalexTudorica Constantin Alexandru tudalex Data 30 septembrie 2008 21:29:02
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <stdio.h>

const int n_max = 16001;

int a[n_max];
int n,k, i;

int good(int x)
{
	int p = k, c = 0, o;
	while (p >0)
	{
		o = x;
		while (o >= 0 && c<=n)
			o-=a[++c];
		--c;
		--p;
	}
	if (c>=n)
		return 1;
	return 0;
}
int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d %d", &n, &k);
	for (i = 1; i <= n; ++ i)
		scanf("%d", &a[i]);
	int step = 1<<29;
	for (i = 0; step; step>>=1)
	{
		if (!good(i+step))
			i+=step;
	}
	printf("%d\n", i+1);
}