Pagini recente » Cod sursa (job #183407) | Cod sursa (job #2079318) | Cod sursa (job #2453591) | Cod sursa (job #1915935) | Cod sursa (job #1796404)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int N,x[10005],R,permut,j=1,M=1;
float A[30],p=1,Prod[30],F;
void Read()
{
fin>>N>>R;
for(int i=1;i<=N;++i)
fin>>A[i];
}
int valid(int k)
{
int i;
for(i=1;i<k;++i)
if(x[k]==x[i]) return 0;
return 1;
}
int solutie(int k)
{
return k==N;
}
void afisare(int k)
{
p=1;
for(int i=1;i<=R;++i)
p*=A[x[i]];
Prod[j]=p; j++; M++;
}
void backtrack(int k)
{
int i;
for(i=1;i<=N;++i)
{
x[k]=i;
if(valid(k))
if(solutie(k))
{afisare(k);
permut++;}
else backtrack(k+1);
}
}
void CalcandPrint()
{
for(int j=1;j<M;++j)
F+=Prod[j]/permut;
fout<<F;
}
int main()
{
Read();
backtrack(1);
CalcandPrint();
return 0;
}