Cod sursa(job #195468)

Utilizator MciprianMMciprianM MciprianM Data 18 iunie 2008 19:00:18
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<fstream>
using namespace std;
int N, K;
double p[30];

double Pt;

long long cnk=1;

ofstream g("dezastru.out");

void Comb(int n, int k){
  int i;
  if((k<<1)<n)
    k=n-k, n-=k;
  for(i=k+1;i<=n;++i)
    cnk*=i;
  for(i=1;i<=n-k;++i)
    cnk/=i;
}

void back(int i, int x, double Pc){
  int j, l=N-K+i+1;
  if(i==K)
      Pt+=Pc;
      else
  for(j=x;j<l;++j)
     back(i+1, j+1, Pc*p[j]);
}
int main(){
  int  i;
  ifstream f("dezastru.in");
  f>>N>>K;
  for(i=1;i<=N;i++)
    f>>p[i];
  f.close();
  Comb(N,K);
  back(1,1,1);
  g<<Pt/cnk<<'\n';
  g.close();
  return 0;
}