#include <bits/stdc++.h>
using namespace std;
class Coins1 {
public:
double moreHead(vector<double>& probs, int n) {
vector<vector<double>> dp(n+1, vector<double>(n+1, 0.0));
dp[0][0] = 1.0;
for(int i = 1; i <= n; ++i) {
dp[i][0] = dp[i-1][0] * (1 - probs[i-1]);
for(int j = 1; j <= i; ++j) {
dp[i][j] =
dp[i-1][j] * (1 - probs[i-1])
+ dp[i-1][j-1] * probs[i-1];
}
}
double ans = 0.0;
for(int j = n/2 + 1; j <= n; ++j) {
ans += dp[n][j];
}
return ans;
}
};
int main() {
int n;
cin >> n;
vector<double> probs(n);
for(int i = 0; i < n; ++i) cin >> probs[i];
Coins1 obj;
cout << fixed << setprecision(10)
<< obj.moreHead(probs, n) << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBDb2luczEgewpwdWJsaWM6CiAgZG91YmxlIG1vcmVIZWFkKHZlY3Rvcjxkb3VibGU+JiBwcm9icywgaW50IG4pIHsKICAgIHZlY3Rvcjx2ZWN0b3I8ZG91YmxlPj4gZHAobisxLCB2ZWN0b3I8ZG91YmxlPihuKzEsIDAuMCkpOwoKICAgIGRwWzBdWzBdID0gMS4wOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgIGRwW2ldWzBdID0gZHBbaS0xXVswXSAqICgxIC0gcHJvYnNbaS0xXSk7CiAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gaTsgKytqKSB7CiAgICAgICAgZHBbaV1bal0gPQogICAgICAgICAgICBkcFtpLTFdW2pdICAgKiAoMSAtIHByb2JzW2ktMV0pCiAgICAgICAgICArIGRwW2ktMV1bai0xXSAqIHByb2JzW2ktMV07CiAgICAgIH0KICAgIH0KCiAgICBkb3VibGUgYW5zID0gMC4wOwogICAgZm9yKGludCBqID0gbi8yICsgMTsgaiA8PSBuOyArK2opIHsKICAgICAgYW5zICs9IGRwW25dW2pdOwogICAgfQogICAgcmV0dXJuIGFuczsKICB9Cn07CgppbnQgbWFpbigpIHsKICBpbnQgbjsgCiAgY2luID4+IG47CiAgdmVjdG9yPGRvdWJsZT4gcHJvYnMobik7CiAgZm9yKGludCBpID0gMDsgaSA8IG47ICsraSkgY2luID4+IHByb2JzW2ldOwoKICBDb2luczEgb2JqOwogIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDEwKQogICAgICAgPDwgb2JqLm1vcmVIZWFkKHByb2JzLCBuKSA8PCBlbmRsOwogIHJldHVybiAwOwp9Cg==