binary search *1600

Please click on ads to support us..

Python Code:

import sys
input = sys.stdin.readline
 
def calculate_time(x, n, c, s):
    total_time = 0
    for i in range(n):
        time = (abs(x - c[i]) / s[i])         total_time = max(total_time, time)
    return total_time
 
n = int(input())
c = list(map(int, input().split())) s = list(map(int, input().split()))  
l = 1
r = 1e10
check = 1e-6
 
while (r - l > check):
    distance = (r - l) / 3.0
    mid_1 = l + distance
    mid_2 = r - distance
    
    time_1 = calculate_time(mid_1, n, c, s) 
    time_2 = calculate_time(mid_2, n, c, s)
 
    if (time_1 <= time_2):
        r = mid_2
    if (time_1 >= time_2):
        l = mid_1
 
print(round(calculate_time(l, n, c, s), 12))


Comments

Submit
0 Comments
More Questions

46A - Ball Game
114A - Cifera
776A - A Serial Killer
25B - Phone numbers
1633C - Kill the Monster
1611A - Make Even
1030B - Vasya and Cornfield
1631A - Min Max Swap
1296B - Food Buying
133A - HQ9+
1650D - Twist the Permutation
1209A - Paint the Numbers
1234A - Equalize Prices Again
1613A - Long Comparison
1624B - Make AP
660B - Seating On Bus
405A - Gravity Flip
499B - Lecture
709A - Juicer
1358C - Celex Update
1466B - Last minute enhancements
450B - Jzzhu and Sequences
1582C - Grandma Capa Knits a Scarf
492A - Vanya and Cubes
217A - Ice Skating
270A - Fancy Fence
181A - Series of Crimes
1638A - Reverse
1654C - Alice and the Cake
369A - Valera and Plates