Pagini recente » Cod sursa (job #2723715) | Cod sursa (job #66561) | Cod sursa (job #1951632) | Cod sursa (job #2336784) | Cod sursa (job #1558668)
#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];
double Sol;
double Nr;
void Read();
double Fact(int x);
void Comb(int k);
void Write(int k);
int main()
{
Read();
Nr = Fact( N - K + 1 );
Comb(1);
fout << Sol;
fin.close();
fout.close();
return 0;
}
double Fact(int x)
{
if ( x == N )
return double(x);
return (double(x) * Fact(x + 1));
}
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)
{
double aux = 1.0;
for (int i = 1; i <= k; ++i )
aux *= p[x[i]];
Sol += aux / Nr;
}
void Read()
{
fin >> N >> K;
for (int i = 1; i <= N; ++i )
fin >> p[i];
}