Pagini recente » Cod sursa (job #1016645) | Cod sursa (job #10049) | Cod sursa (job #2150743) | Cod sursa (job #532467) | Cod sursa (job #1383690)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
double a[30], v[30], s, K, p;
int n;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
inline void Adun()
{
int i;
double x = 1;
for (i = 1; i <= K; i++)
x *= v[i];
s += x;
p++;
}
inline bool Valid(int k)
{
int i, nr = -1;
for (i = 1; i <= n; i++)
if (v[k] == a[i])
nr++;
for (i = 1; i < k; i++)
if (v[i] == v[k] && nr < 1)
return false;
else if (v[i] == v[k])
nr--;
return true;
}
inline void Back(int k)
{
int i;
for (i = 1; i <= n; i++)
{
v[k] = a[i];
if (Valid(k))
{
if (k == n) Adun();
else Back(k + 1);
}
}
}
int main()
{
int i;
fin >> n >> K;
for (i = 1; i <= n; i++)
fin >> a[i];
fin.close();
Back(1);
fout << s / p << "\n";
fout.close();
return 0;
}