Cod sursa(job #163374)

Utilizator nimeniaPaul Grigoras nimenia Data 22 martie 2008 01:15:52
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream.h>
#include <stdio.h>


int sol[30],n,kk;
long  fact,fact2;
double v[30],st;

int cond(int a){
	for (int i=0;i<a;i++)
		if (sol[i]==sol[a]) return 0;
	return 1;
}

double calc(int a){
	 double p=1;
	 for (int i=1;i<=a;i++)
		 p*=v[sol[i]-1];
	 return p;

	 }


int main(){
	ifstream f("dezastru.in");
	freopen("dezastru.out","w",stdout);
	int k,p;
    f>>n;
    int i;
    f>>kk;
	for ( i=0;i<n;i++) f>>v[i];
    
    k=1;sol[k]=1;
    while (k>0){
           
          if (sol[k]>n) sol[--k]++; 
		  else if (k==kk) {st+=calc(k);sol[k]++;}
          else if (k<n) {sol[++k]=sol[k-1]+1;}
          }
          
	fact=1;	fact2=1;
	for (i=2;i<=kk;i++) fact2*=i;
	st=st*fact2;
	for(i=2;i<=n;i++) fact*=i;
    st=st/fact;


	printf("%f",st);

	f.close();
	return 0;
}