Pagini recente » Cod sursa (job #2095518) | Cod sursa (job #1364762) | Cod sursa (job #1866216) | Cod sursa (job #1455754) | Cod sursa (job #1899257)
#include <fstream>
using namespace std;
int v[16010];
int n, k, capacitate, t, i, maxim ,suma, crt, st, dr;
int main() {
ifstream fin ("transport.in");
ofstream fout("transport.out");
fin>>n>>k;
for (i=1;i<=n;i++) {
fin>>v[i];
if (v[i] > maxim)
maxim = v[i];
suma += v[i];
}
st = maxim;
dr = suma;
while (st <= dr) {
// calculez cate transporturi sunt necesare cu capacitatea fixata
capacitate = (st + dr)/2;
crt = capacitate - v[1];
t = 1;
for (i=2;i<=n;i++) {
if (v[i] <= crt) {
crt -= v[i];
} else {
t++;
crt = capacitate - v[i];
}
}
if (t <= k) {
dr = capacitate - 1;
} else
st = capacitate + 1;
}
fout<<st;
return 0;
}