Pagini recente » Cod sursa (job #1997280) | Cod sursa (job #238410) | Cod sursa (job #1327322) | Cod sursa (job #1666813) | Cod sursa (job #3271146)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, v[16001],maxim;
long long s = 0;
int main()
{
fin>>n>>k;
for (int i = 1; i<=n; i++) {
fin>>v[i];
s+=v[i];
if (v[i] > maxim) maxim = v[i];
}
long long st = 1, dr = s, mij;
long long ans = -1;
while (st<=dr) {
mij = (st+dr)/2;
if (mij >= maxim) {
long long int cap = 0;
int nr = 0;
for (int i = 1; i<=n; i++) {
if (cap > mij) {
nr++;
cap = v[i];
}
else cap+=v[i];
}
if (nr <= k) {
ans = mij;
dr = mij-1;
}
else st = mij+1;
}
else {
st = mij+1;
}
}
fout<<ans+1;
return 0;
}