#include #pragma warning(disable:4996) using namespace std; using ll = long long; const int dx[4] = { 1,0,-1,0 }, dy[4] = { 0,1,0,-1 }; int N; vector>ass; vector>bss; void permutation1(int pos, vector&used,vector&perm,vector&v,vector>&vss) { if (pos == N) { vss.push_back(perm); return; } for (int i = 0; i < N; i++) { if (!used[i]) { perm[pos] = v[i]; used[i] = true; permutation1(pos + 1,used,perm, v,vss); used[i] = false; } } return; } int main() { cin >> N; vectoras(N); vectorbs(N); for (int i = 0; i < N; i++) { cin >> as[i]; } for (int i =0 ; i < N; i++) { cin >> bs[i]; } vectorused1(N, false); vectorperm1(N); permutation1(0, used1, perm1, as, ass); vectorused2(N, false); vectorperm2(N); permutation1(0, used2, perm2, bs, bss); int win_num = 0; int total_num = 0; for (int i = 0; i < ass.size(); i++) { for (int j = 0; j < bss.size(); j++) { total_num++; int win = 0; int lose = 0; for (int k = 0; k < N; k++) { if (ass[i][k] > bss[j][k]) { win++; } else if (ass[i][k] < bss[j][k]) { lose++; } } if (win > lose) { win_num++; } } } cout << (double)win_num / (double)total_num << endl; }