Cod sursa(job #214843)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 16 octombrie 2008 14:45:49
Problema Dezastru Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
int n,m=0,k,sol[26];
float a[26],b[26];
void read(){
    scanf("%d%d",&n,&k);
    for(int i=1; i<=n; ++i)
	scanf("%f",&a[i]);}
int check(int val,int x){
    for(int j=1; j<=x; ++j)
	if(sol[j]==val)
	    return 0;
    return 1;}
void back(int x){
    int i;
    if(x==k+1){
	b[++m]=1;
	for(i=1; i<=k; ++i)
	    b[m]*=a[sol[i]];}
    else
	for(i=1; i<=n; ++i)
	     if(check(i,x)){
		sol[x]=i;
		back(x+1);}}
void print(){
    float prob=0;
    for(int i=1; i<=m; ++i)
        prob+=(float)b[i]/m;
    printf("%f",prob);}
int main(){
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    read();
    back(1);
    print();
    return 0;}