#include #include #include #include #include using namespace std; int N, A[5009], R[5009]; int main() { // Step #1. Input cin >> N; for (int i = 0; i < N; i++) cin >> A[i]; for (int i = 0; i < N; i++) cin >> R[i]; assert(N <= 20); // Step #2. Brute Force double Answer = 0.0, Cnts = 0.0; for (int i = 0; i < (1 << N); i++) { vector S; double E = 0; for (int j = 0; j < N; j++) { S.push_back(A[j]); sort(S.begin(), S.end()); reverse(S.begin(), S.end()); if ((i & (1 << j)) != 0) { E += 1.0 * S[S.size() - 1] * R[j]; S.pop_back(); } } Answer += E; Cnts += 1.0; } printf("%.12lf\n", Answer / Cnts); return 0; }