Pagini recente » Cod sursa (job #550061) | Cod sursa (job #2945968) | Cod sursa (job #2053557) | Cod sursa (job #1679392) | Cod sursa (job #1470933)
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
int n, v[16000], k;
int vezi(int x) {
int i, j, s, t;
i = t = 0;
j = 1;
s = v[i];
while (t <= k && j < n) {
s += v[j];
if (s > x){
s = v[j];
t++;
}
j++;
}
if (s < x) t++;
if (t>k)
return 1;
else
return 0;
}
int main(){
ifstream f("transport.in");
ofstream g("transport.out");
int i, lo = 0, hi = 0, mid, x;
f >> n >> k;
for (i = 0; i < n; ++i) {
f >> v[i];
lo = max(lo, v[i]);
hi += v[i];
}
while (hi - lo > 1){
mid = (lo + hi) / 2;
x = vezi(mid);
if (x)
lo = mid;
else
hi = mid;
}
if (vezi(lo) == 0)
g << lo;
else
g << hi;
//cin.get();
f.close();
g.close();
return 0;
}