Cod sursa(job #1052902)

Utilizator caliuxSegarceanu Calin caliux Data 11 decembrie 2013 21:34:48
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in("dezastru.in");
ofstream out("dezastru.out");

int N, M, sol[20], use[20];
double s, p[20], c;

void afis(){
    int i;
    double x = 1;
    for(i = 1; i <= M; i++){
        x *= p[sol[i]];
    }
    x *= use[M];
    s += (x/c);
}

void backt(int k){
    if(k == M + 1){
        afis();
    }else{
        for(int i = sol[k - 1] + 1; i <= N - M + k; i++){
            sol[k] = i;
            backt(k + 1);
        }
    }
}

int main()
{
    in >> N >> M;
    c = use[1] = 1;
    for(int i = 2; i <= N; i++){
        c *= i;
        use[i] = use[i - 1] * i;
    }

    for(int i = 1; i <= N; i++){
        in >> p[i];
    }
    backt(1);
    out << s;
    return 0;
}