Pagini recente » Cod sursa (job #217285) | Cod sursa (job #2388979) | Cod sursa (job #3128668) | Cod sursa (job #2050672) | Cod sursa (job #2313557)
#include <fstream>
#include <vector>
#include <iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int main() {
int N, K;
fin >> N >> K;
vector <double> Arr(N);
for (double &itm : Arr) fin >> itm;
vector < pair <double, int> > dp;
//dp.reserve(N * N * N * N);
double sum = 0.0;
unsigned long long cnt = 0;
for (int idx = 0; idx < (int)Arr.size(); ++idx) {
for (const pair <double, int> &itm : dp)
if (itm.second + 1 < K)
dp.push_back({ itm.first * Arr[idx], itm.second + 1 });
else
sum += itm.first * Arr[idx], ++cnt;
dp.push_back({Arr[idx], 1});
}
for (; K; --K) sum *= K, cnt = 1ULL * cnt * K;
fout << fixed << setprecision(6) << sum / cnt;
}