// 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;
}
Ly8gQ29pbnMgCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IE47CiAgICBjaW4gPj4gTjsKCiAgICB2ZWN0b3I8ZG91YmxlPiBwKE4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgICBjaW4gPj4gcFtpXTsKICAgIH0KCiAgCiAgICB2ZWN0b3I8ZG91YmxlPiBkcChOICsgMSwgMC4wKTsKICAgIGRwWzBdID0gMS4wOyAvLyAwIGNvaW5zLCAwIGhlYWRzOiBwcm9iYWJpbGl0eSAxCgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgCiAgICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqID49IDE7IGotLSkgewogICAgICAgICAKICAgICAgICAgICAgZHBbal0gPSBkcFtqIC0gMV0gKiBwW2ldICsgZHBbal0gKiAoMS4wIC0gcFtpXSk7CiAgICAgICAgfQogICAgICAgIC8vIGogPSAwOiBubyBoZWFkcyBtZWFucyBhbGwgdGFpbHMKICAgICAgICBkcFswXSA9IGRwWzBdICogKDEuMCAtIHBbaV0pOwogICAgfQoKIAogICAgaW50IHRocmVzaG9sZCA9IChOICsgMSkgLyAyOwogICAgZG91YmxlIGFucyA9IDAuMDsKICAgIGZvciAoaW50IGogPSB0aHJlc2hvbGQ7IGogPD0gTjsgaisrKSB7CiAgICAgICAgYW5zICs9IGRwW2pdOwogICAgfQoKIAogICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMTIpIDw8IGFucyA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9