Pagini recente » Cod sursa (job #1794891) | Cod sursa (job #1771726) | Statistici SandruCarin (SandruCarin) | Rating Bucaciuc Andrey (siur) | Cod sursa (job #2340487)
#include <iostream>
#include <fstream>
const int TRANSPMAX = 256000005;
const int NMAX = 16005;
int Stiva[NMAX];
bool Incape(int C, int K, int N) {
int Camion = C;
int countR = 1;
for (int i = 1; i <= N; ++i) {
if (countR > K) {
return false;
}
if (Stiva[i] > Camion) {
Camion = C;
++countR;
--i;
}
else {
Camion -= Stiva[i];
}
}
return (countR <= K);
}
int cautare_binara(int N, int K) {
int stanga = 1;
int dreapta = TRANSPMAX;
int cap_min = dreapta;
while (dreapta >= stanga) {
int mijloc = (dreapta + stanga) / 2;
if (Incape(mijloc, K, N)) {
dreapta = mijloc - 1;
cap_min = mijloc;
}
else {
stanga = mijloc + 1;
}
}
return cap_min;
}
int main() {
std::ifstream in("transport.in");
std::ofstream out("transport.out");
int N, K;
in >> N >> K;
for (int i = 1; i <= N; ++i) {
in >> Stiva[i];
}
out << cautare_binara(N, K);
system("PAUSE");
return 0;
}