Pagini recente » Borderou de evaluare (job #2010159) | Arhiva Educationala | Arhiva Educationala | Borderou de evaluare (job #2014684) | Cod sursa (job #3294215)
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int caut_bin (int v[], int n, int k) {
int val = 0, st = 1, 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;
}