Pagini recente » Cod sursa (job #2837284) | Cod sursa (job #564136) | Cod sursa (job #1388559) | Cod sursa (job #254639) | Cod sursa (job #2845057)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, v[16005], st, dr, rezultat;
int transporturi(int C) {
int cnt = 1, size = 0; // minim 1 transport
for(int i = 1; i <= n; i++) {
if(size + v[i] <= C) {
size += v[i];
} else {
cnt++;
size = v[i];
}
}
return cnt;
}
int main() {
fin >> n >> k;
for(int i = 1; i <= n; i++) {
fin >> v[i];
dr += v[i];
st = max(st, v[i]);
}
while(st <= dr) {
int mid = (st + dr) / 2;
if(transporturi(mid) <= k) {
rezultat = mid;
dr = mid - 1;
} else {
st = mid + 1;
}
}
fout << rezultat;
return 0;
}