#include double a[100005]; double left_min[100005], right_max[100005]; int A[100005], B[100005]; long long int sa[100005], sb[100005]; int main() { int n; scanf("%d", &n); int i, j; for (i = 0; i < n; i++) scanf("%d", &A[i]); for (i = 0; i < n; i++) scanf("%d", &B[i]); sa[0] = sb[0] = 0; for (i = 0; i < n; i++) sa[i + 1] = sa[i] + A[i]; for (i = 0; i < n; i++) sb[i + 1] = sb[i] + B[i]; double min, mid, max; min = 0; max = 1e18; int f; for (j = 0; j < 200; j++) { mid = (max + min) / 2; for (i = 0; i <= n; i++) a[i] = sa[i] - sb[i] * mid; left_min[0] = a[0]; for (i = 1; i <= n; i++) { if (left_min[i - 1] > a[i]) left_min[i] = a[i]; else left_min[i] = left_min[i - 1]; } right_max[n] = a[n]; for (i = n - 1; i >= 0; i--) { if (right_max[i + 1] < a[i]) right_max[i] = a[i]; else right_max[i] = right_max[i + 1]; } f = 0; for (i = 0; i < n; i++) if (left_min[i] > right_max[i + 1]) f++; if (f > 0) max = mid; else min = mid; } printf("%.20lf\n", min); return 0; }