FastPrepFind Machine Count

Find Machine Count

Cisco logoCisco● HardFULLTIMEINTERNOA
Learn

Problem statement

There are n regions where servers are hosted. The number of machines in the i-th region is given by machineCount[i], where 0 <= i < n. Managing all these regions can be challenging, so the team decided to move some machines to exactly 3 regions. The number of machines in the i-th of these 3 target regions is given by finalMachineCount[i], where 0 <= i < 3.

There are two operations that can be performed:

  • Add or Remove Machines: Add or remove a machine from any existing region. The number of machines in that server should be non-zero before and after the operation. This operation costs 1 unit.
  • Move All Machines: Move all machines from one region to another existing region at a cost of shiftingCost units. The now-empty region is destroyed in this operation.

Objective: Find the minimum cost to shift the machines so that any 3 regions have the counts required in finalMachineCount.

Note: It is possible that there are additional machines left at the end apart from the ones placed in the final 3 regions.

Function

getMinimumCost(machineCount: int[], finalMachineCount: int[], shiftingCost: int) → int

Complete the function getMinimumCost in the editor.

getMinimumCost has the following parameters:

  1. int machineCount[]: The initial number of machines in the regions.
  2. int finalMachineCount[]: The final number of machines required in the 3 regions.
  3. int shiftingCost: The cost to move all machines from one region to another.

Returns int: The minimum cost to move machines into 3 regions.

Examples

Example 1

machineCount = [2, 3, 5, 7]finalMachineCount = [5, 10, 5]shiftingCost = 2return = 5
  1. Increase the number of machines in the 1st and 2nd regions by 1 and 2 machines respectively. The new machineCount = [3, 5, 5, 7]. Total cost for these operations is 1 + 2 = 3.
  2. Move all the machines from the 4th region to the 1st region, which takes shiftingCost = 2. The new machineCount = [10, 5, 5]. The cost of this operation is 2.

Total Cost = 3 + 2 = 5

Example 2

machineCount = [2, 4, 5, 3]finalMachineCount = [4, 4, 4]shiftingCost = 5return = 2

Increase the number of machines in the 4th region by 1 and decrease the number of machines in the 3rd region by 1. The new machineCount = [2, 4, 4, 4]. Total cost for these operations is 1 + 1 = 2. Use the 2nd, 3rd, and 4th regions as the required servers, leaving behind the 1st region.

Example 3

machineCount = [5, 10, 15, 20, 25]finalMachineCount = [20, 20, 20]shiftingCost = 3return = 8

On increasing the number of machines of the 5th region by 5, the new machineCount = [5, 10, 15, 20, 20]. Total cost required for these operations = 5.

Now, moving all the machines from the 3rd region to the 1st region, which takes shiftingCost(3) dollars, the new machineCount = [20, 10, 20, 20]. Total cost required for these operations = 3.

Use the 1st, 3rd, and 4th regions as required regions, leaving behind the 2nd region. The total cost = 5 + 3 = 8.

Constraints

  • 3 <= n <= 10^8
  • 1 <= machineCount[i], finalMachineCount[i] <= 10^6
  • 1 <= shiftingCost <= 10^6

More Cisco problems

See Cisco hiring insights
public int getMinimumCost(int[] machineCount, int[] finalMachineCount, int shiftingCost) {
  // write your code here
}
machineCount[2, 3, 5, 7]
finalMachineCount[5, 10, 5]
shiftingCost2
expected5
Checking account…