Pagini recente » Cod sursa (job #2002238) | Cod sursa (job #630640) | Cod sursa (job #1965600) | Cod sursa (job #2598981) | Cod sursa (job #2070006)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("TRANSPORT.IN");
ofstream out("TRANSPORT.OUT");
int v[100];
int suficient(int mij, int n, int k) {
int s = 0, drum = 1;
for (int i = 1; i <= n; i++) {
if (s + v[i] <= mij)
s = s + v[i];
else {
drum++;
s = v[i];
}
}
if (drum <= k)
return 1;
else return 0;
}
int main() {
int MAX = -32000, MIN = 0, n, k, mi, lo, hi, val = 32000;
in >> n >> k;
for (int i = 1; i <= n; i++) {
in >> v[i];
MIN = MIN + v[i];
if (v[i] > MAX)
MAX = v[i];
}
cout << MIN << MAX;
lo = MAX;
hi = MIN;
while (lo <= hi) {
mi = (lo + hi) / 2;
if (suficient(mi, n, k) == 1) {
if (mi < val)
val = mi;
hi = mi - 1;
}
else lo = mi + 1;
}
out << val;
cout.flush();
return 0;
}