File tree Expand file tree Collapse file tree
exercises/1000_programs/medium Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import math
2+
3+ def minSpeedOnTime (dist , hour ):
4+ # If it's impossible to cover all trains even at infinite speed
5+ # (need at least 1 hour per train except the last one)
6+ if len (dist ) - 1 >= hour :
7+ return - 1
8+ left , right = 1 , 10 ** 7
9+ ans = - 1
10+ while left <= right :
11+ mid = (left + right ) // 2
12+ # Calculate time taken at speed 'mid'
13+ time = 0
14+ for i in range (len (dist ) - 1 ):
15+ time += (dist [i ] + mid - 1 ) // mid
16+ # Last train doesn't need to wait for integer hour
17+ time += dist [- 1 ] / mid
18+ if time <= hour + 1e-9 :
19+ ans = mid
20+ right = mid - 1
21+ else :
22+ left = mid + 1
23+ return ans
24+ # Driver code to test locally
25+ if __name__ == "__main__" :
26+ print (minSpeedOnTime ([1 ,3 ,2 ], 6 )) # Expected: 1
27+ print (minSpeedOnTime ([1 ,3 ,2 ], 2.7 )) # Expected: 3
28+ print (minSpeedOnTime ([1 ,3 ,2 ], 1.9 )) # Expected: -1
You can’t perform that action at this time.
0 commit comments