N = gets.to_i
P = gets.split.map(&:to_f)

dp = Array.new(N + 1) { Array.new(N + 1, 0) }
dp[0][0] = 1.0

N.times do |i|
  (i + 1).times do |j|
    dp[i + 1][j + 1] += dp[i][j] * P[i]
    dp[i + 1][j] += dp[i][j] * (1 - P[i])
  end
end

puts dp[N][(N / 2 + 1)..-1].inject(:+)
