Pagini recente » Cod sursa (job #2540654) | Cod sursa (job #585689) | Cod sursa (job #3233762) | Cod sursa (job #116160) | Cod sursa (job #3262062)
#include<fstream>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, v[16005];
int s, v_maxi, rsp;
bool transportat (int capacitate) {
int transporturi = 1, vol_cur = 0;
for (int i = 1; i <= n; i++) {
if (vol_cur + v[i] <= capacitate)
vol_cur += v[i];
else {
transporturi++;
vol_cur = v[i];
}
if (transporturi > k)
return false;
}
return true;
}
int main() {
fin >> n >> k;
for (int i = 1; i <= n; i++) {
fin >> v[i];
s += v[i];
v_maxi = max (v_maxi, v[i]);
}
int st = v_maxi, dr = s;
while (st <= dr) {
int m = (st + dr) / 2;
if (transportat(m) == true) {
rsp = m;
dr = m - 1;
}
else
st = m + 1;
}
fout << rsp;
return 0;
}