Pagini recente » Cod sursa (job #893970) | Cod sursa (job #2569518) | Cod sursa (job #2127531) | Cod sursa (job #1221538) | Cod sursa (job #2626305)
#include <iostream>
#include <fstream>
using namespace std;
ofstream g("transport.out");
int a[16005], n, k;
void Citire() {
ifstream f("transport.in");
int i;
f >> n >> k;
for (i = 1; i <= n; i++)
f >> a[i];
f.close();
}
int Div(int x) {
int secv, i, ct;
secv = 0;
ct = 1;
for (i = 1; i <= n; i++) {
if (a[i] > x) return 0;
secv += a[i];
if (secv > x) {
ct++;
secv = a[i];
}
}
if (ct <= k) return 1;
return 0;
}
int Cautare_binara() {
int st, dr, poz, m;
st = 1;
dr = 256000000;
poz = 0;
while (st <= dr) {
m = (st + dr) / 2;
if (Div(m) == 1) {
poz = m;
dr = m - 1;
} else st = m + 1;
}
return poz;
}
int main() {
int x;
Citire();
x = Cautare_binara();
g << x << "\n";
g.close();
return 0;
}