Cod sursa(job #2037851)
| Utilizator | Data | 12 octombrie 2017 21:09:33 | |
|---|---|---|---|
| Problema | Dezastru | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <fstream>
using namespace std;
ifstream fi("dezastru.in");
ofstream fo("dezastru.out");
int n,k,A[26],F[26],nr,i;
double P[26],sum;
double suma()
{
int i;
double p=1;
for(i=1;i<=k;i++)
p*=P[A[i]];
return p;
}
void bk(int poz)
{
int i,j;
if(poz==k+1)
{
sum+=suma();
nr++;
}
else
for(i=1;i<=n;i++)
if(F[i]==0 && i>A[poz-1])
{
A[poz]=i;
F[i]=1;
bk(poz+1);
F[i]=0;
}
}
int main()
{
fi>>n>>k;
for(i=1;i<=n;i++)
fi>>P[i];
bk(1);
fo<<(double)sum/nr;
fi.close();
fo.close();
return 0;
}
