Pagini recente » Cod sursa (job #1025980) | Cod sursa (job #2966079) | Cod sursa (job #2001215) | Cod sursa (job #2861083) | Cod sursa (job #2586396)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, v[16001];
int sum, maxim;
bool verificare(int m) {
int s = v[1], counter = 1;
for (int i = 2; i <= n; i++) {
if (s + v[i] <= m)
s += v[i];
else {
counter++;
s = v[i];
}
}
if (counter <= k)
return true;
return false;
}
int main() {
fin >> n >> k;
for (int i = 1; i <= n; i++) {
fin >> v[i];
maxim = max(maxim,v[i]);
}
int st = maxim, dr = 16000 * 16000, sol = 0;
while (st <= dr) {
int mid = (st + dr) / 2;
if (!verificare(mid))
st = mid + 1;
else {
sol = mid;
dr = mid - 1;
}
}
fout << sol;
return 0;
}