Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <string>#include <cstring>#include <cstdio>using namespace std;#define MAX 1005double dp[MAX][MAX];int N, M;double P[MAX];int main() {cin>>N>>M;for (int i = 1; i <= N; ++i) {cin>>P[i];}dp[1][1] = P[1];dp[1][0] = 1 - P[1];for (int i = 2; i <= N; ++i) {dp[i][0] = dp[i - 1][0] * (1 - P[i]);for (int j = 1; j <= i; ++j) {dp[i][j] = dp[i - 1][j - 1] * P[i] + dp[i - 1][j] * (1 - P[i]);}}printf("%.6lf\n", dp[N][M]);return 0;}