Cod sursa(job #690056)

Utilizator davidoceaSintamarian David davidocea Data 25 februarie 2012 09:52:31
Problema Dezastru Scor 0
Compilator cpp Status done
Runda avram_simulare_7 Marime 0.76 kb
#include<cstdio>

float f[30],p[30],prob;
int n,e,k,i;
int v[30];
int evalid(int i) {
    if (v[i] > n) return 0;
    for(int j = 1; j < i; ++j)
		if (v[j] == v[i]) return 0;
    return 1;
}
int main() {
	
	freopen("dezastru.in","r",stdin);
	//freopen("dezastru.out","w",stdout);

    scanf("%d %d",&n,&k);
	
	for(i=1;i<=n;++i){
		scanf("%f",&f[i]);
	}
	for(i=1;i<=28;++i){
		p[i]=1;
	}
	int st = 1;
    while(st > 0) {
		v[st]++;
		if(evalid(st)) {
            if (st == n) {
				++e;
				for(i=1;i<=k;++i){
					p[e]*=f[v[i]];
				}
				
            }
            else
				st++;
		}
		else
        if (v[st] > n) {
			v[st] = 0;
			st--;
        }
    }
	for(i=1;i<=e;++i){
		prob+=p[i]/e;
	}
	printf("%f",prob);
    return 0;
}