Pagini recente » Cod sursa (job #2616899) | Cod sursa (job #2230707) | Cod sursa (job #302370) | Cod sursa (job #1388639) | Cod sursa (job #2126009)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int N = 16001;
int n, k, m, sum[N];
int 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;
}
void cautbin() {
int r = m - 1, pas = 1 << 16;
while (pas != 0) {
if (nrdrumuri(r + pas) > k) 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();
}