Cod sursa(job #195411)

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

double Pt;

long long c=1;

ofstream g("dezastru.out");

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

void calc(){
  int i;
  double Pc=1;
  for(i=1;i<=K;i++)
	  Pc*=p[x[i]];
  Pt+=(Pc*c);
}
//void afis(){
  //int 
//}
void back(int i){
  int j;
  int 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(){
  int i;
  ifstream f("dezastru.in");
  f>>N>>K;
  for(i=1;i<=N;i++)
    f>>p[i];
  f.close();
  back(1);  
  g<<Pt<<'\n'; 
  g.close();   
  return 0;   
}