#include using namespace std; #define rep(i,n) for(int i = 0; i < (int)n; i++) using ll = long long; constexpr ll MAX = 2e3; int main(){ int n; cin >> n; vector a(n), r(n), cnt(MAX); rep(i,n) { cin >> a[i]; cnt[a[i]]++; } rep(i,n) cin >> r[i]; sort(a.begin(),a.end()); vector> dp(n,vector(n,0.0)); rep(i,n) dp[i][i] = 1.0; double ans = 0; rep(i,n) { rep(j,n) ans += dp[j][0]*a[j]*r[i]/2.0; vector> dpn(n,vector(n,0.0)); rep(j,n) rep(k,n) { dpn[j][k] += dp[j][k]/2.0; if(k+1 < n) dpn[j][k] += dp[j][k+1]/2.0; } swap(dp,dpn); } cout << fixed << setprecision(12) << ans << endl; return 0; }