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

dp = Array.new((N + 1) * (N + 1), 0)
dp[0] = 1.0
N.times do |i|
  per = P[i]
  (0..i).each do |j|
    current = dp[i * (N + 1) + j]
    dp[(i + 1) * (N + 1) + j + 1] += current * per
    dp[(i + 1) * (N + 1) + j] += current * (1 - per)
  end
end
ans = 0
(((N + 1) / 2)..N).each do |c|
  ans += dp[N * (N + 1) + c]
end
puts ans