Cod sursa(job #1696650)

Utilizator leraValeria lera Data 29 aprilie 2016 16:37:22
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
using namespace std;
 ifstream fin("dezastru.in");
 ofstream fout("dezastru.out");
 //fac combinari
 long long ns=0;
 int t,n,v[20];
 float a[20];
float sum=0;
float pfact=1;
float rs;
 void adunare()
 {
     float p=1;
     for(int i=1;i<=t;i++)
        p=p*a[v[i]];
     sum+=pfact*p;
 }
 int solutie(int k)
 {
     if(k==t)
        return 1;
     return 0;
 }
 void Bk(int k)
 {
     for(int i=v[k-1]+1;i<=n;i++)
     {
         v[k]=i;
         if(solutie(k))
            {
                 ns++;
                adunare();
            }
         else
            Bk(k+1);

     }

 }
int main()
{
   fin>>n>>t;
    for(int i=1;i<=n;i++)
        fin>>a[i];
    for(int i=1;i<=t;i++)
        pfact*=i;
    v[1]=1;
    Bk(1);
    pfact=1;
   for(int i=1;i<=t;i++)
   pfact=pfact*i;
   ns=ns*pfact;
   rs=(float)sum/ns;
   fout<<rs;
    return 0;
}