Pagini recente » Cod sursa (job #706271) | Cod sursa (job #2496573) | Cod sursa (job #2113488) | Cod sursa (job #67287) | Cod sursa (job #2626242)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int N, K, a[16005];
int Div(int x) {
int secv = 0, i, ct = 0;
for (i = 1; i <= N; i++) {
if (a[i] > x) return 0;
ct += a[i];
if (ct > x) {
secv++;
ct = a[i];
}
}
if (secv <= 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;
ifstream f("transport.in");
ofstream g("transport.out");
f >> N >> K;
for (int i = 1; i <= N; i++) {
f >> a[i];
}
x = Cautare_binara();
g << x<<"\n";
f.close();
g.close();
return 0;
}