Pagini recente » Cod sursa (job #1311417) | Cod sursa (job #3032677) | Cod sursa (job #2167717) | Cod sursa (job #3031220) | Cod sursa (job #2504666)
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
void combinari(int idx, int n, int k, vector <double> &p, vector <double> &chosen, int &curr_len, double &sol, int &num_cmb) {
if (curr_len == k) {
double prod = 1;
for (auto &&pr: chosen) {
prod *= pr;
}
sol += prod;
num_cmb++;
return;
}
for (int i = idx; i < n; i++) {
chosen[curr_len++] = p[i];
combinari(i + 1, n, k, p, chosen, curr_len, sol, num_cmb);
curr_len--;
}
}
int main() {
int n, k;
in >> n >> k;
vector <double> p(n);
vector <double> chosen(k);
for (int i = 0; i < n; i++) {
in >> p[i];
}
int num_cmb = 0, curr_len = 0;
double sol = 0;
combinari(0, n, k, p, chosen, curr_len, sol, num_cmb);
out << fixed << setprecision(10) << sol / num_cmb << '\n';
return 0;
}