Cod sursa(job #1052891)

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

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

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

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

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;
    for(int i = 1; i <= N; i++){
        in >> p[i];
    }
    backt(1);
    out << s / c;
    return 0;
}