Pagini recente » Cod sursa (job #1162899) | Cod sursa (job #2584130) | Cod sursa (job #2138163) | Cod sursa (job #624041) | Cod sursa (job #3156973)
#include <iostream>
#include <fstream>
using namespace std;
const int maxn = 16005;
int n, k;
int v[maxn];
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 << dr << "\n";
return 0;
}