## DEV Community

Abhishek Chaudhary

Posted on

# Heaters

Winter is coming! During the contest, your first job is to design a standard heater with a fixed warm radius to warm all the houses.

Every house can be warmed, as long as the house is within the heater's warm radius range.Â

Given the positions of `houses` and `heaters` on a horizontal line, return the minimum radius standard of heatersÂ so that those heaters could cover all houses.

Notice thatÂ all the `heaters` follow your radius standard, and the warm radius will the same.

Example 1:

Input: houses = [1,2,3], heaters = [2]
Output: 1
Explanation: The only heater was placed in the position 2, and if we use the radius 1 standard, then all the houses can be warmed.

Example 2:

Input: houses = [1,2,3,4], heaters = [1,4]
Output: 1
Explanation: The two heater was placed in the position 1 and 4. We need to use radius 1 standard, then all the houses can be warmed.

Example 3:

Input: houses = [1,5], heaters = [2]
Output: 3

Constraints:

• `1 <= houses.length, heaters.length <= 3 * 104`
• `1 <= houses[i], heaters[i] <= 109`

SOLUTION:

``````import bisect

class Solution:
def findRadius(self, houses: List[int], heaters: List[int]) -> int:
houses.sort()
heaters.sort()
n = len(heaters)
maxclosest = 0
for h in houses:
i = bisect.bisect_left(heaters, h)
mindist = float('inf')
if 0 <= i < n:
mindist = min(mindist, abs(h - heaters[i]))
if i < n - 1:
mindist = min(mindist, abs(h - heaters[i + 1]))
if i > 0:
mindist = min(mindist, abs(h - heaters[i - 1]))
maxclosest = max(maxclosest, mindist)
return maxclosest
``````