Pagini recente » Cod sursa (job #2676760) | Cod sursa (job #1078451) | Cod sursa (job #1803327) | Cod sursa (job #107793) | Cod sursa (job #494011)
Cod sursa(job #494011)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
const int N = 1 << 15;
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) {
++cnt;
}
return cnt;*/
int cnt = 0, sum = 0;
for (int i = 1; i <= n; ++i) {
sum += v[i];
if (sum > x) {
sum = v[i];
++cnt;
}
}
cnt += (sum != 0);
return cnt;
}
int bs () {
int i, step = 1 << 30;
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;
}