Pagini recente » Cod sursa (job #2062001) | Cod sursa (job #409053) | Cod sursa (job #160342) | Cod sursa (job #2225262) | Cod sursa (job #3296137)
#include <fstream>
// #include <iostream>
using namespace std;
ifstream fin("transport.in");
ofstream cout("transport.out");
int v[16005], n, k, maxim;
int f(int capacitate) { // returneaza cate transporturi face
int incarcatura = 0, transporturi = 1;
for(int i = 1; i <= n; i ++) {
incarcatura += v[i];
if(incarcatura > capacitate) {
transporturi ++;
incarcatura = v[i];
}
}
return transporturi;
}
int main() {
fin >> n >> k;
for(int i = 1; i <= n; i ++) {
fin >> v[i];
if(v[i] > maxim)
maxim = v[i];
}
int st = maxim, dr = 256000000, mij, cautare = -1;
while(st <= dr) {
mij = (st + dr) / 2;
if(f(mij) <= k) {
dr = mij - 1;
cautare = mij;
}
else
st = mij + 1;
}
cout << cautare << '\n';
return 0;
}