Cod sursa(job #1452153)

Utilizator theprdvtheprdv theprdv Data 20 iunie 2015 06:21:46
Problema Transport Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.71 kb
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#define mid ((l + r) >> 1)

int N, K, X[16001];

int check(int v){
	int s = 0, _k = 0;
	for (int i = 1; i <= N && _k <= K; ++i){
		if (s + X[i] <= v) s += X[i];
		else s = X[i], ++_k;
	}
	return _k >= K;
}

int main(void)
{
	int l = 0, r = 0, ans;
	freopen("transport.in", "r", stdin);
	freopen("transport.out", "w", stdout);

	scanf("%d %d", &N, &K);
	for (int i = 1; i <= N; ++i)
		scanf("%d", &X[i]),
		l = MAX(l, X[i]),
		r += X[i];
	
	while (l != r)
		if (check(mid)) l = mid + 1;
		else r = mid;
	ans = mid;
	while (check(ans++));
	printf("%d", ans - 1);
	return 0;
}