Pagini recente » Cod sursa (job #1208207) | Cod sursa (job #2448255) | Cod sursa (job #880804) | Cod sursa (job #1891921) | Cod sursa (job #1325327)
#include <iostream>
#include <fstream>
using namespace std;
int permutari[26],n,k,total;
double d,dez[26];
void rez(int ajuns,int numar);
void continua(int ajuns,int numar)
{
int verific[26],i;
for (i=1;i<=25;i++)
{
verific[i]=0;
}
for (i=1;i<numar;i++)
{
verific[permutari[i]]=1;
}
for (i=ajuns+1;i<=n;i++)
{
if (verific[i]==0)
{
permutari[numar]=i;
rez(i,numar+1);
}
}
}
void verificanumar()
{
int i;
double ac=1;
total++;
for (i=1;i<=k;i++)
{
ac*=dez[permutari[i]];
}
d+=ac;
}
void rez(int ajuns,int numar)
{
if (ajuns<n&&numar<=k)
{
continua(ajuns,numar);
}
else if (numar==k+1)
{
verificanumar();
}
}
int main()
{
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int i,j;
in>>n;
in>>k;
for (i=1;i<=n;i++)
{
in>>dez[i];
}
rez(0,1);
d/=total;
out<<d;
}