Pagini recente » Cod sursa (job #1374661) | Cod sursa (job #671290) | Cod sursa (job #1144680) | Cod sursa (job #1298932) | Cod sursa (job #1558643)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int N, K;
int x[30]; //
bool s[30];
double p[30];
queue<double> Q;
int cont;
double Sol;
void Read();
void Comb(int k);
void Write(int k);
int main()
{
Read();
Comb(1);
while ( !Q.empty() )
{
Sol += (Q.front() / cont );
//fout << Q.front() << ' ' << cont << '\n';
Q.pop();
}
fout << Sol;
fin.close();
fout.close();
return 0;
}
void Comb(int k)
{
if ( k > K )
{
Write(k - 1);
return;
}
for ( int i = 1; i <= N; ++i )
if ( !s[i] )
{
s[i] = true;
x[k] = i;
Comb(k + 1);
s[i] = false;
}
}
void Write(int k)
{
cont++;
double aux = 1.0;
for (int i = 1; i <= k; ++i )
aux *= p[x[i]];
Q.push(aux);
}
void Read()
{
fin >> N >> K;
for (int i = 1; i <= N; ++i )
fin >> p[i];
}