Cod sursa(job #238656)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 2 ianuarie 2009 21:55:22
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.86 kb
#include<stdio.h>
int n,a[26],ex[26],p=0,m,i;
float sum,ab,exe[26];

void back(int i)
{int k,x;

     for(k=1;k<=n;k++)
     {a[i]=k;
                      if(ex[k]==0)
     {
                      
                      ex[k]=1;
                      if(i==n)
                      {p++;
                             //for(x=1;x<=n;x++)
                             // printf("%d ",a[x]);
                             // printf("\n");
                              ex[k]=0;
                              }
                              else
                              {back(i+1);
                              ex[k]=0;
                              }
                              }
                              }
                              }
void back2(int i)
{int k,x;

     for(k=1;k<=n;k++)
     {a[i]=k;
                      if(!ex[k])
     {
                      
                      ex[k]=1;
                      if(i==m)
                      {      for(x=1;x<=m;x++)
                            { ab*=exe[a[x]];
                           // printf("%.1f ",exe[a[x]]);
                            }
                           // printf("\n");
                             sum+=ab;
                             ab=1;
                             ex[k]=0;
                          }
                              else
                              {back2(i+1);
                              ex[k]=0;
                              }
                              }
                              }
                              }
int main ()
{ab=1;
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
    scanf("%f",&exe[i]);
 //   back(1);
 p=1;
 for(i=1;i<=n;i++)
 p*=i;
 
    back2(1);
    
    printf("%.7f",sum/p);
    return 0;
}