Cod sursa(job #3185501)

Utilizator cosmin983Pascale Cosmin cosmin983 Data 19 decembrie 2023 09:53:56
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>


using namespace std;


ifstream cin("transport.in");
ofstream cout("transport.out");


const int NMAX = 16e3;


int answer, n, k, a[NMAX];


bool check(int value) {
	int currentShipment = 0, numberOfShipments = 1;
	for (int index = 0; index < n; ++index) {
		if (currentShipment + a[index] <= value) {
			currentShipment += a[index];
			continue;
		}
		if (a[index] > value || numberOfShipments == k) {
			return false;
		}
		currentShipment = a[index];
		++numberOfShipments;
	}


	return true;
}


void read() {
	cin >> n >> k;
	for (int index = 0; index < n; ++index) {
		cin >> a[index];
	}
}


void solve() {
	int left = 1, right = 256e6, middle;
	while (left <= right) {
		middle = (left + right) / 2;
		if (check(middle)) {
			answer = middle;
			right = middle - 1;
			continue;
		}
		left = middle + 1;
	}
}


void display() {
	cout << answer;
}


int main() {
	read();
	solve();
	display();
	return 0;
}