Cod sursa(job #79214)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 21 august 2007 12:43:09
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
# include <stdio.h>

const long int NRB=25;
const long int MAXN=(long int)1<<NRB;
long int n,k;
float s,v[NRB+1];

void citire()
{
FILE *f=fopen("dezastru.in","r");
fscanf(f,"%ld%ld",&n,&k);
long int i;
for (i=1;i<=n;i++) fscanf(f,"%f",&v[i]);
fclose(f);
}

void scrie(float sol)
{
FILE *g=fopen("dezastru.out","w");
fprintf(g,"%-.6f\n",sol);
fcloseall();
}

void gen(long int pos, float p, long int nrb)
{
if (nrb==k) s+=p;
if (pos<=n&&nrb<k)
	{
	gen(pos+1,p*v[pos],nrb+1);
	gen(pos+1,p       ,nrb  );
	}
}

int main()
{
citire();
long int i,j;
gen(1,1,0);
long long int c[30][30]={0};
c[0][0]=1;
for (i=1;i<=n;i++)
	{
	c[i][0]=1;
	for (j=1;j<=k;j++)
		c[i][j]=c[i-1][j]+c[i-1][j-1];
	}
scrie(s/c[n][k]);
return 0;
}