Pagini recente » Cod sursa (job #1153481) | Cod sursa (job #3268472) | Cod sursa (job #1530474) | Cod sursa (job #2667811) | Cod sursa (job #2156077)
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n, k, i, maxim, suma, st, dr, c, cc, tr, v[16001];
int main()
{
fin >> n >> k;
maxim = -1;
for (i=1; i<=n; i++){
fin >> v[i];
maxim = max(maxim, v[i]);
suma+=v[i];
}
st = maxim;
dr = suma;
while (st <= dr){
c = (st + dr)/2;
cc = c - v[1];
tr = 1;
for (i=2; i<=n; i++){
if (cc >= v[i])
cc-=v[i];
else {
tr++;
cc = c - v[i];
}
}
if (tr > k){
st = c + 1;
}
else {
dr = c - 1;
}
}
fout << st;
return 0;
}