Pagini recente » Cod sursa (job #238475) | Cod sursa (job #1421466) | Cod sursa (job #2562174) | Cod sursa (job #1922964) | Cod sursa (job #177455)
Cod sursa(job #177455)
#include<stdio.h>
FILE *in=fopen("dezastru.in","r"),*out=fopen("dezastru.out","w");
int n,k,nr=0,i;
double s=0,v[30],st[30],mat[26][26];
void initializari()
{
fscanf(in,"%d %d",&n,&k);
for(i=1;i<=n;i++)
fscanf(in,"%lf ",&v[i]);
for(i=1;i<=n+1;i++)
st[i]=0;
}
int valid(int p)
{
if(p && st[p]<=st[p-1]) return 0;
return 1;
}
void bktr(int p)
{
int pval;
for(pval=1;pval<=n;pval++)
{
st[p]=pval;
if(valid(p))
if(p==k)
{
nr++;mat[nr][0]=1;
for(int x=1;x<=k;x++)
{
mat[nr][0]*=v[st[x]];
mat[nr][x]=st[x];
}
}
else bktr(p+1);
}
}
int main()
{
initializari();
bktr(1);
for(i=1;i<=nr;i++)
s+=mat[i][0];
fprintf(out,"%.6lf",s/nr);
fcloseall();
return 0;
}