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.