Pagini recente » Cod sursa (job #2535617) | Cod sursa (job #220652) | Cod sursa (job #510774) | Cod sursa (job #1464801) | Cod sursa (job #1275988)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <utility>
#include <string>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <limits>
#include <sstream>
#include <deque>
#include <bitset>
#include <complex>
#include <functional>
#include <memory>
#include <numeric>
#define x first
#define y second
typedef std::pair<int, int> pii;
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
long long n, x[100], y[100], m, b;
double a[100], s, sum = 0;
long long int sl = 1;
void factorial(int v)
{
for(int i = 2; i <= v; i++)
sl *= i;
}
void back(int k)
{
if(k - 1 == m)
{
s = a[x[1]];
for(int i = 2; i <= m; i++)
s *= a[x[i]];
sum += s/sl;
}
else
for(int i = 1; i <= n; i++)
{
if(y[i] == 0 && x[k - 1] < i)
{
x[k] = i;
y[i] = 1;
back(k + 1);
y[i] = 0;
}
}
}
long long fact(int mata) {
if(!mata) return 1LL;
return fact(mata - 1) * mata;
}
int main () {
fin >> n >> m;
b = n;
for(int i = 1; i <= n; i++)
fin >> a[i];
factorial(b);
back(1);
fout.precision(6);
fout.setf(ios::fixed);
fout << sum * fact(m);
return 0;
}