#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; static inline bool isOdd(int v) { return v & 0x01; } int main() { int N; cin >> N; std::vector A; std::vector B; for (size_t i = 0; i < N; ++i) { int v; cin >> v; A.push_back(v); } for (size_t i = 0; i < N; ++i) { int v; cin >> v; B.push_back(v); } size_t win = 0; size_t not_win = 0; std::sort(B.begin(), B.end()); std::sort(A.begin(), A.end()); do { size_t w = 0; size_t nw = 0; for (size_t i = 0; i < N; ++i) { if (A[i] > B[i]) { w++; } else { nw++; } } if (w > nw) { win++; } else { not_win++; } } while (std::next_permutation(B.begin(), B.end())); cout << (double)win / (win+not_win) << endl; return 0; }