#include <bits/stdc++.h>
using namespace std;
long long int power(long long int x, long long int y) {
  long long int t;
  if (y == 0) return 1;
  t = power(x, y / 2);
  return (y % 2 == 0) ? t * t : x * t * t;
}
long long int powm(long long int a, long long int n, long long int mod) {
  long long int p = 1;
  while (n > 0) {
    if (n % 2) {
      p = p * a;
      p %= mod;
    }
    n >>= 1;
    a *= a;
    a %= mod;
  }
  return p % mod;
}
int main() {
  int i, j, k, n;
  scanf("%d", &n);
  int c[n], v[n];
  for ((i) = 0; (i) < (n); ++(i)) scanf("%d", &c[i]);
  for ((i) = 0; (i) < (n); ++(i)) scanf("%d", &v[i]);
  pair<int, int> arr[n];
  for ((i) = 0; (i) < (n); ++(i)) {
    arr[i].first = c[i];
    arr[i].second = v[i];
  }
  sort(arr, arr + n);
  float low = (int)(arr[0].first - 1);
  float high = (int)(arr[n - 1].first + 1);
  float tl = 0, tr = 0;
  float mid = low + (high - low) / 2;
  do {
    float mid = low + (high - low) / 2;
    tl = 0, tr = 0;
    for (i = 0; arr[i].first < mid; i++) {
      tl = max(abs((float)arr[i].first - mid) / ((float)arr[i].second), tl);
    }
    for (; i < n; i++) {
      tr = max(abs((float)arr[i].first - mid) / ((float)arr[i].second), tr);
    }
    if (tl > tr)
      high = mid;
    else
      low = mid;
  } while (abs(tl - tr) > 0.000001);
  printf("%f\n", tr);
  return 0;
}
