Cod sursa(job #549567)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 8 martie 2011 19:37:12
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
using namespace std;
short n,m,x[26];
long long var=1,per=1;
double rasp,p[26];
void posibilitati()
{long long i,j,o=1,lk;
if(m>n-m)	i=m,j=n-m;
else		i=n-m,j=m;
i++;
for(lk=2;lk<i;lk++)
	per*=lk;
for(;i<=n;i++)
	var*=i;
for(i=2;i<=j;i++)
	o*=i;
var/=o;
per*=o;
}
void calculeaza()
{short i;
double aux=1;
for(i=1;i<=m;i++)
	aux*=p[x[i]];
rasp+=aux;
}
void comb(int k)
{int i;
for(i=x[k-1]+1;i<=n;i++)
	{x[k]=i;
	if(k==m) calculeaza();
	else	comb(k+1);
	}
}
int main()
{int i;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
in>>n>>m;
for(i=1;i<=n;in>>p[i],i++);
in.close();
posibilitati();
comb(1);
out<<rasp*per/var<<'\n';
out.close();
return 0;
}