Cod sursa(job #818921)

Utilizator bia.liliPoenar Liana bia.lili Data 18 noiembrie 2012 12:12:48
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
//infoarena-dezastru
#include<fstream>
using namespace std;
int i,n,k,perm=1,st[26],perm_k=1;
double a[26],st_atac[26],s=0;
ifstream cin("dezastru.in");
ofstream cout("dezastru.out");
   
   void afisare (int p)
{  
        s=s+perm_k*st_atac[p];
  
        
 
}
   int valid(int p)
{
       for(i=1;i<p;i++)
       if(st[i]==st[p])
         return 0;
       return 1;
}

  void back(int p)
{int pval;
          for(pval=st[p-1]+1;pval<=n;pval++)
          {
                                    st[p]=pval;
                                    
                                    if(valid(p))
                                    {st_atac[p]=st_atac[p-1]*a[pval];
                                    if(p==k)
                                    afisare(p);
                                    else
                                    back(p+1);
                                    }}
}
int main()
{
    
   cin>>n>>k;
 for(i=1;i<=n;i++)
 cin>>a[i];

 for(i=1;i<=k;i++)
   perm_k=perm_k*i;
   
    for(i=1;i<=n;i++)
   perm=perm*i;
 st_atac[0]=1;
   back(1);
   
cout<<s/(double)perm;
   return 0;}