Pagini recente » Cod sursa (job #1301776) | Cod sursa (job #1658930) | Cod sursa (job #2984795) | Cod sursa (job #3224684) | Cod sursa (job #1766909)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int V[26];
float S[26], N, M;
float Sum, P, nrComb;
void Read(){
f >> N >> M;
for (int i = 1; i <= N; ++i)
f >> S[i];
}
int Condition(int k){
if (V[k] < N){
V[k]++; return 1;
}
return 0;
}
int Verification(int k){
for (int i = 1; i < k; ++i){
if (V[i] == V[k] or V[i] > V[k]) return 0;
}
return 1;
}
void sumFunction(){
P = 1;
for (int i = 1; i <= M; ++i){
P*=S[V[i]];
}
Sum+=P;
}
void BKTR(int k){
V[k] = 0;
while (Condition(k)){
if (Verification(k)){
if (k == M) nrComb++, sumFunction();
else BKTR(k+1);
}
}
}
int main(){
Read();
BKTR(1);
g << setprecision(6) << Sum/nrComb;
return 0;
}