Cod sursa(job #690139)

Utilizator ephgstefana gal ephg Data 25 februarie 2012 11:41:41
Problema Dezastru Scor 60
Compilator cpp Status done
Runda avram_simulare_7 Marime 0.68 kb
#include <cstdio>
double a[26];
int cmb[26];
int valid(int pc,int n,int k){
	if(pc>k)return 0;
	if(cmb[pc]>n)return 0;
	if(cmb[pc]<=cmb[pc-1])return 0;
	return 1;
}
int main () {
	int n,k,i,pc=1,c=0;
	double sp=0,pp;
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	scanf("%d %d",&n,&k);
	for(i=1;i<=n;++i)scanf("%lf",&a[i]);
	for(;pc>0;){
		if(cmb[pc]==0) cmb[pc]=cmb[pc-1]+1;
		else ++cmb[pc];
		if(valid(pc,n,k)){
			
			if(pc==k){
				
				pp=1;
				++c;
				for(i=1;i<=k;++i){
					pp*=a[cmb[i]];
				}
				sp+=pp;
			}
			
			++pc;
			
		}
		else
			if(cmb[pc]>n){
			cmb[pc]=0;
			--pc;
			}
	}
	printf("%lf",sp/c);
	return 0;
}