Pagini recente » Cod sursa (job #223586) | Cod sursa (job #1497669) | Cod sursa (job #1377459) | Cod sursa (job #2043695) | Cod sursa (job #2004320)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n, m;
double val[26];
int st[26], nrDez;
bool viz[26];
double dez[26];
double fact = 1;
void factorial(){
for(int i = m + 1; i <= n; i++)
fact *= i;
}
void citire(){
in >> n >> m;
for(int i = 1; i <= n; i++){
in >> val[i];
dez[i] = 1;
}
factorial();
}
void bkt(int k){
for(int i = st[k-1] + 1; i <= n; i++)
if(viz[i] == false){
st[k] = i;
viz[i] = true;
if(k == m){
nrDez++;
for(int j = 1; j <= m; j++){
dez[nrDez] *= val[st[j]];
}
dez[nrDez] = (float) (dez[nrDez] / fact);
}else
bkt(k + 1);
viz[i] = false;
}
}
void rezolvare(){
double raspuns = 0;
for(int i = 1; i <= nrDez; i++){
raspuns += dez[i];
}
out << raspuns;
}
int main(){
citire();
st[0] = 0;
bkt(1);
rezolvare();
return 0;
}