Cod sursa(job #159956)

Utilizator swift90Ionut Bogdanescu swift90 Data 14 martie 2008 16:08:00
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>
int n,k,sol[32],poz;
double nr[32],sum;
void back(int i){
	int j;
	if(i==k+1){
		double s=1;
		for(j=1;j<=k;++j)
			s*=nr[sol[j]];
		sum+=s;
		return;
	}
	for(j=sol[i-1]+1;j<n;++j){
		sol[poz]=j;
		++poz;
		back(i+1);
		--poz;
	}
}
int main(){
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	int i;
	scanf("%d%d",&n,&k);
	for(i=0;i<n;++i)
		scanf("%lf",&nr[i]);
	sol[0]=-1;
	poz=1;
	back(1);
	
	for(i=2;i<=k;++i)
		sum*=i;
	for(i=n-k+1;i<=n;++i)
		sum/=i;
	
	printf("%lf\n",sum);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}