Cod sursa(job #1148322)

Utilizator StefansebiStefan Sebastian Stefansebi Data 20 martie 2014 17:59:00
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
#include<iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n, k, i, sol[26], nf;
double s, po[26];

void back(int p){
    int i, j;
    if (p == k){
        double pr = 1;
        for (i = 1; i <= k; i++)
            pr = pr * po[sol[i]];
           // fout << sol[i] << " ";
        s = s + pr / nf;// fout << '\n';
    } else {
        for (i = 1; i <= n; i++){
            int ok = 1;
            for (j = 1; j <= p; j++)
                if (sol[j] >= i)
                    ok = 0;
            if (ok){
                sol[p + 1] = i;
                back(p + 1);
            }
        }
    }
}

int main(){
    fin >> n >> k;
    nf = 1;
    for (i = 1; i <= n; i++){
        fin >> po[i]; nf = nf * i;
    }
    back(0);
    s = s * 2;
    fout << fixed << setprecision(6) << s << '\n';
    fin.close();
    fout.close();
}