from collections import deque, defaultdict, Counter from bisect import bisect_left, bisect_right, insort from itertools import permutations, combinations, groupby from heapq import heappop, heappush import math, sys input = lambda: sys.stdin.readline().rstrip("\r\n") def printl(li, sep=" "): print(sep.join(map(str, li))) def yn(flag): print(Yes if flag else No) _int = lambda x: int(x)-1 MOD = 998244353 #10**9+7 INF = 1<<60 Yes, No = "Yes", "No" N = int(input()) A = list(map(int, input().split())) B = list(map(int, input().split())) def check(m): C = [A[i]-B[i]*m for i in range(N)] cum = [0] for c in C: cum.append(cum[-1]+c) res = [0]*N mn = 0 for i in range(N): res[i] += cum[i]-mn + C[i] mn = min(mn, cum[i+1]) mx = cum[N] r = True for i in reversed(range(N)): res[i] += mx-cum[i+1] mx = max(mx, cum[i]) if res[i] < 0: r = False return r l, r = 0, 10**10 for _ in range(100): m = (l+r)/2 if check(m): l = m else: r = m print(l)