Pagini recente » Cod sursa (job #1376570) | Cod sursa (job #937294) | Cod sursa (job #2292275) | Cod sursa (job #2413874) | Cod sursa (job #1824144)
#include <fstream>
#include <iostream>
using namespace std;
double r;
int N, K;
int V[26];
int M[26];
double C[26];
void backtrack(int x)
{
if(x == N)
{
double k = 1.0;
for(int a = 0; a < K; a++)
{
int j = M[a];
k = k * C[j];
}
r = r + k;
return;
}
else
{
for(int a = 1; a <= N; a++)
{
if(V[a] != -1)
{
M[x] = V[a];
V[a] = -1;
backtrack(x + 1);
V[a] = M[x];
}
}
}
}
int main()
{
ifstream i("dezastru.in");
ofstream o("dezastru.out");
i >> N >> K;
for(int a = 1; a <= N; a++)
{
i >> C[a];
}
for(int a = 0; a <= N; a++)
{
V[a] = a;
}
backtrack(0);
o << r / 6;
return 0;
}