Pagini recente » Cod sursa (job #683258) | Cod sursa (job #2495103) | Cod sursa (job #1832775) | Cod sursa (job #3289917) | Cod sursa (job #2495875)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
int n,k;long double prob[30];pair <long double, long long> dp[30][30];
int main () {
long long suma=0;long double p=0.00;
fin>>n>>k;
for(int i=1;i<=n;++i)
fin>>prob[i];
for(int i=1;i<=n;++i)
dp[1][i].first=prob[i],dp[1][i].second=1;
//dp[i][j]=primele i atacuri care se termina cu atacul j (combinari);
for(int i=2;i<=k;++i)
for(int j=k;j<=n;++j)
for(int i2=k-1;i2<j;++i2)
dp[i][j].first=dp[i][j].first+(dp[i-1][i2].first*prob[j]),dp[i][j].second=dp[i][j].second+dp[i-1][i2].second;
//acuma faci media aritmetica la alea;oarecum;
for(int i=1;i<=n;++i)
suma=suma+dp[k][i].second,p=p+dp[k][i].first;
fout<<setprecision(6)<<p/(long double)suma;
return 0;
}