Facebook Pixel

Amazon Online Assessment (OA) - K Nearest Post Offices

Find the k post offices located closest to you, given your location and a list of locations of all post offices available.

Locations are given in 2D coordinates in [X, Y], where X and Y are integers.

Euclidean distance is applied to find the distance between you and a post office.

Assume your location is [m, n] and the location of a post office is [p, q], the Euclidean distance between the office and you is SquareRoot((m - p) * (m - p) + (n - q) * (n - q)).

K is a positive integer much smaller than the given number of post offices.

Input

The input consists of three arguments:

you: a list representing your location coordinates

post_offices: a list representing post offices' location coordinates

k: a positive integer much smaller than the given number of post offices

Output

Return 2D coordinates in [X, Y] of post offices located closest to you

Examples

Example 1:

Input:

you = [0, 0]

post_offices = [[-16, 5], [-1, 2], [4, 3], [10, -2], [0, 3], [-5, -9]]

K = 3

Output: [[-1, 2], [0, 3], [4, 3]]

Try it yourself

1from heapq import heapify, heappop
2from math import dist
3
4def nearest_post_offices(you: list[int], offices: list[list[int]], k: int) -> list[list[int]]:
5    h = [(dist(you, o), o) for o in offices]
6    heapify(h)
7    return [heappop(h)[1] for _ in range(k)]
8
9if __name__ == "__main__":
10    you = [int(x) for x in input().split()]
11    offices = [[int(x) for x in input().split()] for _ in range(int(input()))]
12    k = int(input())
13    res = nearest_post_offices(you, offices, k)
14    for row in res:
15        print(" ".join(map(str, row)))
16
Invest in Yourself
Your new job is waiting. 83% of people that complete the program get a job offer. Unlock unlimited access to all content and features.
Go Pro
Favorite (idle)