Cod sursa(job #2068713)

Utilizator CojocariuAlexandruCojocariu Alexandru CojocariuAlexandru Data 18 noiembrie 2017 10:38:33
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <iomanip>
#define NMAX 27

using namespace std;

const char inname[] = "dezastru.in";
const char outname[] = "dezastru.out";
ifstream fin(inname);
ofstream fout(outname);

void citire();
void perm(int);
double solutie();

int uz[NMAX], sol[NMAX], i, n, m;
double lov[NMAX], suma;

int main(){
    citire();
    perm(1);
    for(i=1; i<=n; i++)
        suma/=i;
    fout << setprecision(6) << suma << '\n';
    fin.close();
    fout.close();
    return 0;
}

void citire(){
    int i;
    fin >> n >> m;
    for(i=1; i<=n; i++)
        fin >> lov[i];
}

void perm(int k){
    int i;
    if(k==m+1)
        suma+=solutie();
        else{
            for(i=1; i<=n; i++)
                if(uz[i] == 0){
                    uz[i] = 1;
                    sol[k] = i;
                    perm(k+1);
                    uz[i] = 0;
                    }
            }
}

double solutie(){
    int i;
    double rez=1;
    for(i=1; i<=m; i++)
        rez *= lov[sol[i]];
    return rez;
}