Cod sursa(job #2988780)

Utilizator game_difficultyCalin Crangus game_difficulty Data 5 martie 2023 14:36:27
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#define int long long

using namespace std;

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

const int N = 16005;

int v[N];
int n, k, maxx;

bool ok(int c) {
	if (c < maxx) return false;
	int s = 0, tr = 0;
	for (int i = 1; i <= n; i++) {
		if (s + v[i] > c) {
			s = v[i];
			tr++;
		}
		else s += v[i];
	}
	if (s > 0) tr++;
	return tr <= k;
}

int32_t main() {
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		cin >> v[i];
		maxx = max(maxx, v[i]);
	}
	int pos = 1ll << 60;
	for (int pas = 1ll << 59; pas > 0; pas >>= 1) {
		if (ok(pos - pas)) {
			pos -= pas;
		}
	}
	cout << pos;
	return 0;
}