Cod sursa(job #2070006)

Utilizator luis.micuMicu Florian-Luis luis.micu Data 19 noiembrie 2017 08:46:20
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("TRANSPORT.IN");
ofstream out("TRANSPORT.OUT");
int v[100];

int suficient(int mij, int n, int k) {
	int s = 0, drum = 1;
	for (int i = 1; i <= n; i++) {
		if (s + v[i] <= mij)
			s = s + v[i];
		else {
			drum++;
			s = v[i];
		}
	}
	if (drum <= k)
		return 1;
	else return 0;
}

int main() {
	int MAX = -32000, MIN = 0, n, k, mi, lo, hi, val = 32000;
	in >> n >> k;
	for (int i = 1; i <= n; i++) {
		in >> v[i];
		MIN = MIN + v[i];
		if (v[i] > MAX)
			MAX = v[i];
	}

	cout << MIN << MAX;

	lo = MAX;
	hi = MIN;
	while (lo <= hi) {
		mi = (lo + hi) / 2;
		if (suficient(mi, n, k) == 1) {
			if (mi < val)
				val = mi;
			hi = mi - 1;
		}
		else lo = mi + 1;
	}

	out << val;
	cout.flush();
	return 0;
}