Pagini recente » Cod sursa (job #754887) | Cod sursa (job #402941) | Cod sursa (job #1788861) | Cod sursa (job #2169963) | Cod sursa (job #2728841)
#include <fstream>
#include <iomanip>
#define ld long double
#pragma GCC optimize("O3")
ld ans, v[30], n, k;
void calc(int curr, ld prob, int kk = 0) {
if(n-curr+1+kk<k or kk>k) return;
if(curr==n+1) {
if(kk==k) ans += prob;
return;
}
calc(curr+1, prob, kk);
calc(curr+1, prob*v[curr], kk+1);
}
int main() {
std::ifstream fin("dezastru.in");
std::ofstream fout("dezastru.out");
fin>>n>>k;
for(int i=1;i<=n;i++) fin>>v[i];
calc(1, 1.0);
for(int i=1;i<=n-k;i++) ans*=(ld)i;
for(int i=k+1;i<=n;i++) ans/=(ld)i;
fout<<std::fixed<<std::setprecision(6)<<ans;
}