Pagini recente » Cod sursa (job #3219485) | Cod sursa (job #2732055) | Cod sursa (job #797193) | Cod sursa (job #1478797) | Cod sursa (job #3156977)
#include <iostream>
#include <fstream>
using namespace std;
const int MAX_N = 16005;
int N, K;
int v[MAX_N];
int main() {
ifstream fin("transport.in");
ofstream fout("transport.out");
fin >> N >> K;
int st = 0, dr = 0;
for (int i = 0; i < N; i++) {
fin >> v[i];
dr += v[i];
if (v[i] > st) {
st = v[i];
}
}
while (st < dr) {
int mij = (st + dr) / 2;
int tc = 0;
int cc = 0;
for (int i = 0; i < N; i++) {
if (v[i] > mij) {
tc = K + 1;
break;
}
if (cc + v[i] <= mij) {
cc += v[i];
} else {
tc++;
cc = v[i];
}
}
if (tc <= K) {
dr = mij;
} else {
st = mij + 1;
}
}
fout << st << endl;
return 0;
}