#include using namespace std; using ll=long long; int main() { int n; cin >> n; vector a(n + 1); vector b(n + 1); for (int i = 1;i <= n;i++) { cin >> a[i]; } for (int i = 1;i <= n;i++) { cin >> b[i]; } long double left = 0, right = n; for (int i = 1; i <= n; i++) { right = max(right, (long double)a[i] / b[i]); } auto check = [&](long double x) { vector s(n + 1); vector preMin(n + 1); vector sufMax(n + 1); long double c = 1e100L; for (int i = 1;i <= n;i++) { s[i] = s[i - 1] + a[i] - x * b[i]; } for (int i = 0; i < n;i++) { c = min(c, s[i]); preMin[i + 1] = c; } c = -1e100L; for (int i = n;i >= 1;i--) { c = max(c, s[i]); sufMax[i] = c; } for (int i = 1;i <= n;i++) { if (sufMax[i] <= preMin[i]) { return true; } } return false; }; while (right - left > 0.000001) { long double mid = (left + right) / 2; if (check(mid)) right = mid; else left = mid; } cout << fixed << setprecision(7) << left << endl; }