Pagini recente » Cod sursa (job #2568265) | Cod sursa (job #1033727) | Cod sursa (job #2169885) | Cod sursa (job #385528) | Cod sursa (job #1513526)
#include <fstream>
using namespace std;
int v[16010], n, t, c, i, cc, nrc, sum , maxim, st, dr;
int main () {
ifstream fin ("transport.in");
ofstream fout("transport.out");
fin>>n>>t;
for (i=1;i<=n;i++) {
fin>>v[i];
sum += v[i];
if (v[i] > maxim)
maxim = v[i];
}
// in cate transporturi pot duce toate saltelele cu un
// camion de capacitate c
st = maxim;
dr = sum;
while (st <= dr ) {
int c = (st + dr)/2;
nrc = 1;
cc = c-v[1];
for (i=2;i<=n;i++) {
if (v[i] <= cc) {
cc -= v[i];
} else {
nrc ++;
cc = c-v[i];
}
}
if (nrc <= t) {
dr = c-1;
} else
st = c+1;
}
fout<<st;
}