Skip to content

Commit 9a5f5f4

Browse files
Merge pull request #2677 from Dev-06-06/feature/1870-min-speed
Add solution for Issue #2660: Minimum Speed to Arrive on Time
2 parents 69bad55 + 30ed3fa commit 9a5f5f4

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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

0 commit comments

Comments
 (0)