#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
bool is_prime(long long x) {
  if (x == 1) return false;
  for (int i = 2; i * i <= x; i++)
    if (x % i == 0) return false;
  return true;
}
bool is_palindrome(string s1) {
  int l = s1.length();
  for (int i = 0; i < l / 2; i++)
    if (s1[i] != s1[l - i - 1]) return false;
  return true;
}
long long modular_pow(long long base, long long exponent, int modulus) {
  long long result = 1;
  while (exponent > 0) {
    if (exponent % 2 == 1) result = (result * base) % modulus;
    exponent = exponent >> 1;
    base = (base * base) % modulus;
  }
  return result;
}
long long binaryToDec(string number) {
  long long result = 0, pow = 1;
  for (int i = number.length() - 1; i >= 0; --i, pow <<= 1)
    result = (result + (number[i] - '0') * pow) % 1000003;
  return result;
}
long long binaryToDec2(string number) {
  long long result = 0, pow = 1;
  int l = number.length();
  for (int i = 0; i < l; ++i, pow <<= 1)
    result = (result + (number[i] - '0') * pow) % 1000003;
  return result;
}
int n;
bool solve(double t, vector<int>& x, vector<int>& v) {
  vector<pair<double, int> > e;
  for (int _n = n, i = 0; i < _n; ++i) {
    e.push_back(make_pair(x[i] - v[i] * t, 0));
    e.push_back(make_pair(x[i] + v[i] * t, 1));
  }
  sort(e.begin(), e.end());
  int cnt = 0;
  for (int _n = e.size(), i = 0; i < _n; ++i) {
    if (e[i].second == 0) cnt++;
    if (e[i].second == 1) cnt--;
    if (cnt == n) return true;
  }
  return false;
}
int main(int argc, char* argv[]) {
  cin >> n;
  vector<int> x(n);
  vector<int> v(n);
  for (int _n = n, i = 0; i < _n; ++i) {
    cin >> x[i];
  }
  for (int _n = n, i = 0; i < _n; ++i) {
    cin >> v[i];
  }
  double lo = 0, hi = 1e9;
  while (abs(hi - lo) > 1e-7) {
    double med = (hi + lo) / 2;
    if (solve(med, x, v)) {
      hi = med;
    } else {
      lo = med;
    }
  }
  printf("%.8f\n", lo);
}
