Pagini recente » Cod sursa (job #1951174) | Cod sursa (job #1506484) | Cod sursa (job #2624397) | Cod sursa (job #163665) | Cod sursa (job #63369)
Cod sursa(job #63369)
#include <stdio.h>
#define fin "dezastru.in"
#define fout "dezastru.out"
#define Nmax 26
double v[Nmax],ret=0,aux=1.0;
int N,K,used[Nmax];
void go(int lv,double tmp) {
int i;
if ( lv == N + 1 ) {
ret = ret + (double)tmp / aux;
//fprintf(stderr,"%lf\n",tmp);
}
else
for (i=1;i<=N;++i)
if (!used[i]) {
used[i]=1;
if (lv<=K)
go(lv+1,(double)( tmp * v[i] ));
else
go(lv+1,tmp);
used[i]=0;
}
}
int main() {
int i;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%d%d",&N,&K);
for (i=1;i<=N;++i) {
scanf("%lf",&v[i]);
aux*=i;
}
go(1,1.0);
printf("%.6lf\n",ret);
return 0;
}