You are viewing a single comment's thread. Return to all comments →
JavaScript solution:
function minimumPasses(machines, workers, cost, candies) { let minPass = Math.ceil(candies / (machines * workers)); let passingDays = 0; let collectMwDays = 0; let stock = 0; while (machines * workers < candies) { let canByMwInOneDay = machines * workers + stock >= cost; let availableMw = 0; collectMwDays = canByMwInOneDay ? 1 : Math.ceil((cost - stock) / (machines * workers)); passingDays += collectMwDays; availableMw = Math.floor( (collectMwDays * (machines * workers) + stock) / cost ); stock = (collectMwDays * (machines * workers) + stock) % cost; const diff = machines - workers; if (diff !== 0) { const posDiff = Math.abs(diff); const fill = availableMw >= posDiff ? posDiff : availableMw; if (diff > 0) { workers += fill; } else { machines += fill; } availableMw -= fill; } if (availableMw > 0) { const machinesFill = Math.floor(availableMw / 2); const workersFill = availableMw - machinesFill; machines += machinesFill; workers += workersFill; } minPass = Math.min( minPass, Math.ceil((candies - stock) / (machines * workers)) + passingDays ); } return minPass; }
Seems like cookies are disabled on this browser, please enable them to open this website
Making Candies
You are viewing a single comment's thread. Return to all comments →
JavaScript solution: