Cod sursa(job #158209)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 13 martie 2008 15:29:11
Problema Dezastru Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<stdio.h>
long long st[30],i,prod,n,m,prod2;
float suma,a[30];

void back(int k,float p)
{int i;
     if (k==m+1) suma+=p;
     else
     {
	 for (i=st[k-1]+1;i<=n;i++)
	 {
		st[k]=i;
	     back(k+1,p*a[i]);
	 }
     }
}

int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d %d",&n,&m);
    for (i=1;i<=n;i++)
	scanf("%f",&a[i]);
    prod=prod2=1;
    for (i=m+1;i<=n;i++)
	prod*=i;
    for (i=1;i<=n-m;i++)
	prod2*=i;
    back(1,1);
    printf("%.6f",(float)suma*prod2/prod);
    return 0;
}