Cod sursa(job #37424)
Utilizator | Data | 25 martie 2007 09:25:39 | |
---|---|---|---|
Problema | Dezastru | Scor | 80 |
Compilator | cpp | Status | done |
Runda | preONI 2007, Runda 4, Clasa a 9-a si gimnaziu | Marime | 0.48 kb |
#include <stdio.h>
#define MAXN 32
int N, K;
long double p[MAXN];
long double SUM; int NR;
void back( int k, int l, long double P )
{
if (k == K)
{
NR++;
SUM += P;
return;
}
for (int i = l + 1; i <= N - K + k; i++)
back( k + 1, i, P * p[i] );
}
int main()
{
freopen("dezastru.in", "rt", stdin);
freopen("dezastru.out", "wt", stdout);
scanf("%d %d", &N, &K);
for (int i = 0; i < N; i++)
scanf("%Lf", p + i);
back(0, -1, 1);
printf("%.6Lf\n", SUM / NR);
return 0;
}