Cod sursa(job #187235)

Utilizator blue_phoenixPosea Elena blue_phoenix Data 2 mai 2008 09:18:20
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <stdio.h>
int n,st[30],k;
double date[30],suma=0,total;

void calcul(){
  int i;
  double produs=1;
  for(i=1;i<=k;i++)produs*=date[st[i]];
  suma+=produs;
  }

int a_mai_fost(int nr, int limita){   
int i;   
for(i=1;i<=limita;i++)if(st[i]==nr)return 1;   
return 0;   
}   


void afisare(){
     int i;
     for(i=1;i<=k;i++)printf("%d ",st[i]);
     printf("\n");
     }

void permutari(){
int i,loc=k;
   for(i=1;i<=k;i++)st[i]=i;
   calcul();
   loc=n;   
  while(loc>0){   
   st[loc]++;   
   if(st[loc]>n)loc--;   
     else{   
       if(loc==k)   
         {
          if(!a_mai_fost(st[loc],loc-1))calcul();
         }else{   
           if(!a_mai_fost(st[loc],loc-1)){loc++;st[loc]=0;}
           }   
     }   
  }   

   }



int main(){
 int i;
 freopen("dezastru.in","r",stdin);
 freopen("dezastru.out","w",stdout);

 scanf("%d %d",&n,&k);
 for(i=1;i<=n;i++)scanf("%lf",&date[i]);
 permutari();
 //printf("suma=%-10.6f",suma);
 //incerc sa impart la fiecare termen in parte
 for(i=2;i<=n;i++)
 suma/=i;
 printf("%-1.6f\n",suma);
 return 0;
}