Cod sursa(job #494002)

Utilizator toniobFMI - Barbalau Antonio toniob Data 20 octombrie 2010 14:04:25
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
using namespace std;

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

const int N = 1 << 14;
int n, k, v[N];

int nr_trans (int x) {
	int cnt = 0, sum = 0;
	for (int i = 1; i <= n; ++i) {
		if (sum + v[i] > x) {
			++cnt;
			sum = v[i];
			continue;
		}
		sum += v[i];
	}
	if (sum > x) {
		++cnt;
	}
	return cnt;
}

int bs () {
	int i, step = 1 << 14;
	for (i = 0; step; step >>= 1) {
		if (nr_trans(i + step) >= k) {
			i += step;
		}
	}
	return i + 1;
}

void citire () {
	in >> n >> k;
	for (int i = 1; i <= n; in >> v[i++]);
}

void afisare () {
	out << bs ();
}

int main () {
	citire ();
	
	afisare ();
	
	return 0;
}