Cod sursa(job #3120744)

Utilizator MesterelMester Darius Mesterel Data 8 aprilie 2023 13:33:16
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int sol[26], n, k;
double valori[26];
double medie=0.0;
double nr=1;

bool ok(int i, int isol){
    for (int j=1; j<isol; ++j)
        if (sol[j]==i)
            return 0;
    return 1;
}

void bkt(int isol){
    for (int i=1; i<=n; ++i){
        sol[isol]=i;
        //cout<<isol<<' ';
        if (ok(i, isol)==1){
            if (isol==k){
                double produs=1.0;
                for (int j=1; j<=k; ++j)
                    produs*=valori[sol[j]];
                medie+=produs; //aci sa fac impartire poate
            }
        }else continue;

        if (isol < k)
            bkt(isol+1);
    }

}

int main(){
    ////////sa fac in doua feluri ,sa le impart la final si daca nu merge sa le impart cand le pun in medie direct
    fin>>n>>k;
    for (int i=1; i<=n; ++i)
        fin>>valori[i];
    bkt(1);
    for (int i=2; i<=n; ++i)
        nr*=i;
    fout<<medie/nr;
}