// Coins 
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int N;
    cin >> N;

    vector<double> p(N);
    for (int i = 0; i < N; i++) {
        cin >> p[i];
    }

  
    vector<double> dp(N + 1, 0.0);
    dp[0] = 1.0; // 0 coins, 0 heads: probability 1

    for (int i = 0; i < N; i++) {
      
        for (int j = i + 1; j >= 1; j--) {
         
            dp[j] = dp[j - 1] * p[i] + dp[j] * (1.0 - p[i]);
        }
        // j = 0: no heads means all tails
        dp[0] = dp[0] * (1.0 - p[i]);
    }

 
    int threshold = (N + 1) / 2;
    double ans = 0.0;
    for (int j = threshold; j <= N; j++) {
        ans += dp[j];
    }

 
    cout << fixed << setprecision(12) << ans << "\n";

    return 0;
}