Pagini recente » Cod sursa (job #9163) | Cod sursa (job #9150) | Cod sursa (job #259697) | Cod sursa (job #389246) | Cod sursa (job #2132436)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, maxTransporturi;
int saltele[16001];
inline bool transporta(int capacitate) {
int transporturi = 1;
int capacitateDisponibila = capacitate;
for (int i = 1; i <= n; ++i) {
if (capacitateDisponibila - saltele[i] < 0) {
++transporturi;
capacitateDisponibila = capacitate - saltele[i];
}
else
capacitateDisponibila -= saltele[i];
}
return transporturi <= maxTransporturi;
}
int main()
{
fin >> n >> maxTransporturi;
for (int i = 1; i <= n; ++i)
fin >> saltele[i];
int st = 1, dr = 2e9;
int mid, raspuns;
while (st <= dr) {
mid = (st + dr) / 2;
if (transporta(mid)) {
dr = mid - 1;
raspuns = mid;
}
else
st = mid + 1;
}
fout << raspuns << '\n';
return 0;
}