Pagini recente » Cod sursa (job #2661546) | Cod sursa (job #3295481)
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fin("transport.in");
ofstream fout("transport.out");
int N, K;
fin >> N >> K;
int v[16001];
int suma = 0, maxi = 0;
for (int i = 0; i < N; i++) {
fin >> v[i];
suma += v[i];
if (v[i] > maxi) maxi = v[i];
}
int st = maxi, dr = suma;
int sol = suma;
while (st <= dr) {
int mid = (st + dr) / 2;
int curse = 1;
int cap = 0;
for (int i = 0; i < N; i++) {
if (cap + v[i] <= mid) {
cap += v[i];
} else {
curse++;
cap = v[i];
}
}
if (curse <= K) {
sol = mid;
dr = mid - 1;
} else {
st = mid + 1;
}
}
fout << sol << "\n";
return 0;
}