#pragma GCC optimize("Ofast") #include using namespace std; typedef long long ll; #define EPS (1e-7) #define INF (1e9) #define rep(i, n) for(int i = 0; i < (int)(n); i++) #define all(x) x.begin(),x.end() const double PI = acos(-1); const ll MOD = 1000000007; template inline bool chmax(T &a, T b) { if(a < b) { a = b; return true; } return false; } template inline bool chmin(T &a, T b) { if(a > b) { a = b; return true; } return false; } /////////////////////////////////////////////////////////////// int main() { ios::sync_with_stdio(false); cin.tie(nullptr); //入出力高速化 int N; cin >> N; vector A(N),B(N); rep(i,N) cin >> A[i]; rep(i,N) cin >> B[i]; vector> win(N, vector(N,false)); rep(i,N) { rep(j,N) { if (A[i] > B[j]) win[i][j] = true; } } vector u(N),v(N); rep(i,N) u[i] = i; int q,r; q = r = 0; do { rep(i,N) v[i] = i; do { int p = 0; rep(i,N) { if (win[u[i]][v[i]]) p++; } if (2*p > N) q++; r++; } while (next_permutation(all(v))); } while (next_permutation(all(u))); cout << fixed << setprecision(10) << double(q) / double(r) << endl; }