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: 2021-10-18T13:10:29+05:30

181 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements