Hackerrank - Flatland Space Stations

Hackerrank - Flatland Space Stations

Flatland is a country with a number of cities, some of which have space stations. Cities are numbered consecutively and each has a road of  length connecting it to the next city. It is not a circular route, so the first city doesn't connect with the last city. Determine the maximum distance from any city to it's nearest space station.

For example, there are  cities and  of them has a space station, city . They occur consecutively along a route. City  is  unit away and city  is  units away. City  is  units from its nearest space station as one is located there. The maximum distance is .

Function Description

Complete the flatlandSpaceStations function in the editor below. It should return an integer that represents the maximum distance any city is from a space station.

flatlandSpaceStations has the following parameter(s):

  • n: the number of cities
  • c: an integer array that contains the indices of cities with a space station, -based indexing

Input Format

The first line consists of two space-separated integers,  and .
The second line contains  space-separated integers, the indices of each city having a space-station. These values are unordered and unique.

Constraints

  • There will be at least  city with a space station.
  • No city has more than one space station.

Output Format

Print an integer denoting the maximum distance that an astronaut in a Flatland city would need to travel to reach the nearest space station.

Sample Input 0

5 2
0 4

Sample Output 0

2

Explanation 0

This sample corresponds to following graphic:

hreasy(5).png

The distance to the nearest space station for each city is listed below:

  • has distance , as it contains a space station.
  • has distance  to the space station in .
  • has distance  to the space stations in  and .
  • has distance  to the space station in .
  • has distance , as it contains a space station.

We then take .

Sample Input 1

6 6
0 1 2 4 3 5

Sample Output 1

0

Explanation 1

In this sample,  so every city has space station and we print  as our answer.

Solution in Python

import math

n,m = map(int,input().split())
c= sorted(map(int,input().split()))
m = max(n-c[-1]-1,c[0]-0)
for i in range(1,len(c)):
    d = math.floor((c[i]-c[i-1])/2)
    if d>m:
        m=d
print(m)

Solution using max, list comprehension and list concatenation

from math import floor
n,m = map(int,input().split())
c = sorted(map(int,input().split()))
print(max([floor((c[i]-c[i-1])/2) for i in range(1,len(c))]+[n-c[-1]-1, c[0]-0]))

Additional Info

The following gives us nearest mid point between two space station

import math
math.floor((c[i]-c[i-1])/2)

Distance between first city and the first space station

c[0]-0

Distance between last city and the last space station

n-c[-1]-1

Subscribe to The Poor Coder | Algorithm Solutions

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe