Pagini recente » Cod sursa (job #364420) | Cod sursa (job #3284362) | Cod sursa (job #365406) | Cod sursa (job #890959) | Cod sursa (job #3294217)
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int caut_bin (int v[], int n, int k) {
int maxim = 1;
for (int i = 1; i <= n; ++i)
maxim = max (v[i], maxim);
int val = 0, st = maxim, dr = 16000 * 16000;
while (st <= dr) {
int mij = st + (dr - st) / 2;
int cnt = 1, sum = 0;
for (int i = 1; i <= n; ++i) {
if (sum + v[i] <= mij)
sum += v[i];
else {
sum = v[i];
cnt++;
}
}
if (cnt <= k) {
val = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
return val;
}
int main () {
int n, k;
fin >> n >> k;
int v[n + 1];
for (int i = 1; i <= n; ++i)
fin >> v[i];
fout << caut_bin (v, n, k);
return 0;
}