Cod sursa(job #481553)

Utilizator SzabiVajda Szabolcs Szabi Data 31 august 2010 21:00:51
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>

typedef int tipus1;
typedef float tipus2;

tipus1 n,k,nfact,v[26];
tipus2 a[26],ossz=0;


tipus1 fact(tipus1 p){

tipus1 temp=1,i;

for(i=2;i<=p;i++){temp=temp*i;}

return temp;

}


void osszead(){
tipus2 temp=1;
tipus1 i;

for(i=1;i<=k;i++){temp=temp*a[v[i]];}

ossz+=temp/nfact;

}

bool jo(tipus1 p){
tipus1 i;
for(i=1;i<=p-1;i++){if(v[i]==v[p]){return false;}}

return true;
}

void perm(tipus1 p){
tipus1 i;

for(i=1;i<=n;i++){
	v[p]=i;
	if(jo(p)){
		if(p==n){osszead();}
		else{perm(p+1);}

}}

}


int main(){
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
tipus1 i;
	scanf("%d %d",&n,&k);

	for(i=1;i<=n;i++){scanf("%f",&a[i]);}

	nfact=fact(n);

	perm(1);
	
	printf("%f",ossz);

	return 0;}