Lang:G++
Edit12345678910111213141516171819202122232425262728#include<bits/stdc++.h>using namespace std;int n,m;double p[2000];double d[2][2000];int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%lf",&p[i]);memset(d,0,sizeof d);d[0][0]=1;int now=1,pre=0;for(int i=1;i<=n;i++){for(int j=0;j<i;j++){d[now][j]+=d[pre][j]*(1-p[i]);d[now][j+1]+=d[pre][j]*p[i];}memset(d[pre],0,sizeof d[pre]);now^=1;pre^=1;}printf("%.6lf\n",d[pre][m]);return 0;}