Amazon Online Assessment (OA) - Movies on Flight

You are on a flight and want to watch two movies during this flight.

You are given a list of integers that includes all the movie durations and also given the duration of the flight which is d in minutes.

Now, you need to pick two movies and the total duration of the two movies must be less than or equal to (d - 30min).

Find the pair of movies with the longest total duration. If multiple are found, return the pair with the longest movie.

Input

The input consists of two arguments:

movie_duration: a list of integers representing the duration of movies

d: an integer representing the duration of the flight

Output

return the movie pair.

Examples

Example 1:

Input:

movie_duration = [90, 85, 75, 60, 120, 150, 125]

d = 250

Output: [90, 125]

Explanation:

90min + 125min = 215 is the maximum sum within 220 (250min - 30min)

Try it yourself

Solution

1from typing import List
2
3def movies_on_flight(movie_duration: List[int], d: int) -> List[int]:
4    def search():
5        s = sorted(movie_duration)
6        l = 0
7        r = len(s) - 1
8        while l < r:
9            if s[l] + s[r] <= d - 30:
10                yield s[l], s[r]
11                l += 1
12            else:
13                r -= 1
14
15    return max(search(), key=sum)
16
17if __name__ == '__main__':
18    movie_duration = [int(x) for x in input().split()]
19    d = int(input())
20    res = movies_on_flight(movie_duration, d)
21    print(' '.join(map(str, res)))
22

Got a question?ย Ask the Teaching Assistantย anything you don't understand.

Still not clear? Ask in the Forum, ย Discordย orย Submitย the part you don't understand to our editors.

โ†
โ†‘TA ๐Ÿ‘จโ€๐Ÿซ