#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define aLL(g) (g).begin(),(g).end() #define REP(i, x, n) for(int i = x; i < n; i++) #define rep(i,n) REP(i,0,n) #define F(i,j,k) fill(i[0],i[0]+j*j,k) #define P(p) cout<<(p)< vi; typedef vector vl; typedef vector vd; typedef pair pii; typedef pair pll; typedef long long ll; int dx[] = { 0, 1, 0, -1 }; int dy[] = { -1, 0, 1, 0 }; int sttoi(std::string str) { int ret; std::stringstream ss; ss << str; ss >> ret; return ret; } bool sort_greater(const pair &a, const pair &b) { return a.second > b.second; } void solve() { int n; cin >> n; vector a, b, c(n), d(n); rep(i, n){ int t; cin >> t; a.push_back(t); } rep(i, n){ int t; cin >> t; b.push_back(t); } rep(i, n){ c[i] = i; d[i] = i; } int games = 0; int wins = 0; do{ do{ games++; int cntA = 0,cntB = 0; rep(i, n){ if (a[c[i]] > b[d[i]])cntA++; else cntB++; } if (cntA > cntB){ wins++; } } while (next_permutation(c.begin(), c.end())); } while (next_permutation(d.begin(), d.end())); P((double)wins / (double)games); } int main() { solve(); return 0; }