Cod sursa(job #1193182)

Utilizator Cristian1997Vintur Cristian Cristian1997 Data 31 mai 2014 10:39:41
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
using namespace std;
#include <fstream>
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

int n, k;
int v[30];
double pb=0, prod=1;
double p[30];


void bkt(int) ;

int main()
{
    int i;
    fin>>n>>k;
    for(i=0; i<n; ++i) fin>>p[i];

    for(i=0; i<=n-k; ++i)
    {
        v[0] = i;
        prod = p[i];
        bkt(1);
    }
    for(double fact = k+1; fact<=n; ++fact)
        pb /= fact;
    fout<<pb<<'\n';
    return 0;
}


void bkt(int poz)
{   //pozitiile de la 0 la poz-1 sunt ocupate
    if(poz==k) pb += prod;
    else
    {
        for(int i=v[poz-1]+1; i<=poz+n-k; ++i)
        {
            v[poz] = i;
            prod *= p[i];
            bkt(poz+1);
            v[poz] = 0;
            prod /= p[i];
        }
    }
}