Cod sursa(job #1052892)

Utilizator caliuxSegarceanu Calin caliux Data 11 decembrie 2013 21:28:20
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 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++){
       // out << sol[i] << " ";
        x *= p[sol[i]];
    }
     s += (x/c);
    //out << "\n";
}

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

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