Pagini recente » Cod sursa (job #1890854) | Cod sursa (job #1517493) | Cod sursa (job #2186794) | Cod sursa (job #2725882) | Cod sursa (job #2130137)
#include <fstream>
#include <vector>
#include <queue>
#include <iomanip>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
const int Nmax = 30;
void Comb (int k, int&n, int&m, int&w, double&rez, vector<int>&c, vector<double>&v)
{
if (k == m + 1)
{
double q = 1;
for (int i = 1; i <= m; i++)
q = q * v[c[i]];
rez = rez + 2 * (q / w);
return;
}
for (int i = c[k - 1] + 1; i <= n - m + k; i++)
{
c[k] = i;
Comb(k + 1, n, m, w, rez, c, v);
}
}
int main()
{
int n, m, w = 1;
double rez = 0;
vector<int> c(Nmax);
vector<double> v(Nmax);
in >> n >> m;
for (int i = m + 1; i <= n; i++)
w = w * i;
for (int i = 2; i <= n - m; i++)
w = w / i;
w = w * 2;
for (int i = 1; i <= n; i++)
in >> v[i];
Comb(1, n, m, w, rez, c, v);
out << fixed << setprecision(6) << rez;
return 0;
}