Cod sursa(job #195418)

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

long double Pt;

long double c=2;

ofstream g("dezastru.out");

void fact(long double n, long double k){
  long long i;
  for(i=n-k+1;i<=n;i++)
    c/=i;
}

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