Cod sursa(job #196823)

Utilizator marinaMarina Horlescu marina Data 29 iunie 2008 13:50:59
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
//transport
#include <stdio.h>
#define INPUT "transport.in"
#define OUTPUT "transport.out"
#define NMAX 16384

int N, K;

int v[NMAX];

int ctotal;

int verif()
{
	int i, nrs = 1, c = 0;
	for(i = 0; i < N; ++i)
		if(v[i] > ctotal) return 0;
		else if(v[i] + c <= ctotal) c += v[i];
		else
		{
			++nrs, c = v[i];
			if(nrs > K) return 0;
		}
	return 1;
}

int main()
{
	freopen(INPUT, "r", stdin);
	freopen(OUTPUT, "w", stdout);
	
	scanf("%d %d", &N, &K);
	
	int i;
	for(i = 0; i < N; ++i)
		scanf("%d", v+i);
	
	for(ctotal = 0, i = 28; i >= 0; --i)
	{
		ctotal += 1<<i;
		if(verif()) ctotal -= 1<<i;
	}
	
	printf("%d\n", ctotal+1);
	return 0;
}