Cod sursa(job #195464)

Utilizator MciprianMMciprianM MciprianM Data 18 iunie 2008 18:37:40
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream.h>
//using namespace std;
int N, K;
long double p[30];

long 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, long double Pc){
  int j, l=N-K+i+1;
  for(j=x;j<l;++j){
    Pc*=p[j];
    if(i==K)
      Pt+=Pc/cnk;
    else back(i+1, j+1, Pc);
    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<<'\n';
  g.close();
  return 0;
}