Pagini recente » Cod sursa (job #2553572) | Cod sursa (job #328069) | Cod sursa (job #2024930) | Cod sursa (job #2859239) | Cod sursa (job #251356)
Cod sursa(job #251356)
#include <stdio.h>
FILE* fin = fopen("dezastru.in","r");
FILE* fout = fopen("dezastru.out","w");
int n,m,st[30],as,ev;
long long fact=1,nr,l;
float p[30],rez;
void init(int k){
if(k>0)
st[k]=st[k-1];
else
st[k] = 0;
}
int succ(int k){
if(st[k]<n-m+k){st[k]++;return 1;}
return 0;
}
int valid(int k){
if(st[k] <= st[k-1] && k>1)return 0;
return 1;
}
int sol(int k){
return k==m;
}
void tipar(){
float x=1;
nr++;
for(int i=1;i<=m;i++)
x*=p[st[i]];
rez+=x;
}
void back(int k){
init(k);
while(succ(k))
if(valid(k))
if(sol(k))tipar();
else back(k+1);
}
int main(){
int i;
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(fin,"%f",&p[i]);
back(1);
fprintf(fout,"%.6f",rez/nr);
return 0;
}