Cod sursa(job #1562306)

Utilizator toranagahVlad Badelita toranagah Data 4 ianuarie 2016 22:51:27
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <fstream>
using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

const int MAX_N = 16100;

int N, K;
int v[MAX_N];

bool check(int m) {
	int s = 0;
	int num = 1;
	for (int i = 1; i <= N; i += 1) {
		if (v[i] > m) return false;
		if (s + v[i] > m) {
			num += 1;
			s = 0;
		}
		s += v[i];
	}
	return (num <= K);
}

int main() {
	fin >> N >> K;

	for (int i = 1; i <= N; i += 1) {
		fin >> v[i];
	}

	int res = 0;
	for (int bit = (1 << 30); bit > 0; bit /= 2) {
		if (!check(res + bit)) res += bit;
	}

	fout << res + 1 << endl;
	return 0;
}