Pagini recente » Cod sursa (job #2720920) | Cod sursa (job #959320) | Cod sursa (job #2697744) | Cod sursa (job #1201330) | Cod sursa (job #2126018)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int N = 16001;
int n, k, m, sum[N];
bool nrdrumuri(int x) {
int nr = 1, j = 0;
for (int i = 1; i <= n; i++) {
if (sum[i] - sum[j] > x) {
j = --i;
nr++;
}
}
return (nr > k);
}
void cautbin() {
int r = m - 1, pas = 1 << 27;
while (pas != 0) {
if (nrdrumuri(r + pas)) r += pas;
pas >>= 1;
}
out << r + 1;
}
int main()
{
int x;
in >> n >> k;
for (int i = 1; i <= n; i++) {
in >> x;
m = max(m, x);
sum[i] = sum[i - 1] + x;
}
cautbin();
}