Program to find minimum cost to send same number of people to two different cities in Python


Suppose we have a list called costs. Where costs[i] has [c1, c2] indicates that for person i it costs c1 amount to reach city 0 and costs c2 amount to reach city 1. We want the same number of people to go to city 0 as city 1, we have to find the minimum cost required.

So, if the input is like costs = [[2, 6],[10, 3],[4, 9],[5, 8]], then the output will be 17, because person 0 and 2 will go to city 0 and person 1 and 3 to city 1, so for city 0, the cost is 2+4 = 6, and for city 1, the cost is 8+3 = 11, total is 17.

To solve this, we will follow these steps −

  • s := 0
  • a := a new list
  • for each pair (x, y) in costs, do
    • s := s + x
    • insert (y - x) into a at the end
  • sort the list a
  • for i in range 0 to floor of (size of a / 2) - 1, do
    • s := s + a[i]
  • return s

Example

Let us see the following implementation to get better understanding −

def solve(costs):
   s = 0
   a = []
   for x, y in costs:
      s += x
      a += (y - x,)
   a.sort()
   for i in range(len(a) // 2):
      s += a[i]
   return s

costs = [[2, 6],[10, 3],[4, 9],[5, 8]]
print(solve(costs))

Input

[[2, 6],[10, 3],[4, 9],[5, 8]]

Output

17

Updated on: 18-Oct-2021

85 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements