Pagini recente » Cod sursa (job #511196) | Cod sursa (job #511962) | Cod sursa (job #2424411) | Cod sursa (job #2383647) | Cod sursa (job #2502819)
#include <fstream>
#define MNK 16000
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, cmin, cmij, cmax, tempsum, trans, i, cmijt;
int v[MNK];
bool ok, okt, trk;
int main() {
f >> n >> k;
cmin = 0; cmax = 0;
for(i = 0; i < n; i++) {
f >> v[i];
if(v[i] > cmin) cmin = v[i];
cmax += v[i];
}
ok = false;
trk = false;
while(cmin <= cmax) {
if(ok) cmij--;
else cmij = (cmin + cmax) / 2;
ok = false;
i = 0;
trans = 0;
while(i < n) {
tempsum = 0;
while(tempsum+v[i] <= cmij && i < n) {
tempsum += v[i];
i++;
}
trans++;
}
if(trans == k) { ok = true; cmax = cmij - 1; }
else if(trans < k) cmax = cmij - 1;
else cmin = cmij + 1;
if(!ok && okt) break;
okt = ok;
cmijt = cmij;
}
if(cmin + 1 == cmax) g << cmij + 1;
else g << cmij;
return 0;
}