Pagini recente » Cod sursa (job #3174560) | Cod sursa (job #99495) | Cod sursa (job #258396) | Cod sursa (job #2826383) | Cod sursa (job #952583)
Cod sursa(job #952583)
#include <fstream>
using namespace std;
#define in "transport.in"
#define out "transport.out"
#define N 16005
int v[N], n, k, s;
bool Try (int s) {
int d = 1, tmp = 0;
for (int i = 0; i < n; ++i)
if (tmp + v[i] <= s)
tmp += v[i];
else {
d++;
tmp = v[i];
}
if (d > k)
return false;
return true;
}
int BS () {
int lo = 1, hi = s + 1, sol = s;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (Try(mid)) {
sol = mid;
hi = mid;
}
else
lo = mid + 1;
}
return sol;
}
int main () {
ifstream fin (in);
fin >> n >> k;
for (int i = 0; i < n; ++i) {
fin >> v[i];
s += v[i];
}
fin.close();
ofstream fout (out);
if (k > 1) {
int sol = BS ();
fout << sol;
}
else
if (k == 1)
fout << s;
fout.close();
return 0;
}